home *** CD-ROM | disk | FTP | other *** search
MacBinary | 2002-08-08 | 18.4 KB | [□□□□/□□□□] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
66%
| dexvert
| Ultima 6 (music/ultima6)
| ext
| Supported |
1%
| dexvert
| PC-98 Music (music/pc98Music)
| ext
| Unsupported |
1%
| dexvert
| Amiga E Module (other/amigaEModule)
| ext
| Unsupported |
1%
| dexvert
| ECX module (other/ecxModule)
| ext
| Unsupported |
1%
| dexvert
| Maple Common Binary (other/mapleCommonBinary)
| ext
| Unsupported |
1%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Thu Aug 8 17:19:35 2002, modified Thu Aug 8 17:19:35 2002, 18246 bytes "Parser.m" , at 0x47c6 286 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
100%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| dearkID
| deark: macbinary
| default
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
| |
100%
| librempegprobeID
| NGC (Nintendo DSP Standard) (ngcdspstd)
| default (weak)
|
|
id metadata |
---|
key | value |
---|
macFileType | [□□□□] |
macFileCreator | [□□□□] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 08 50 61 72 73 65 72 | 2e 6d 00 00 00 00 00 00 |..Parser|.m......|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 00 00 00 00 00 00 00 | 00 01 00 00 00 00 00 00 |........|........|
|00000050| 00 00 00 00 00 47 46 00 | 00 01 1e b9 78 90 e7 b9 |.....GF.|....x...|
|00000060| 78 90 e7 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |x.......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 9e 82 00 00 |........|........|
|00000080| 2f 2a 0a 2a 2a 20 20 50 | 61 72 73 65 72 2e 6d 0a |/*.** P|arser.m.|
|00000090| 2a 2a 0a 2a 2a 20 20 43 | 6f 70 79 72 69 67 68 74 |**.** C|opyright|
|000000a0| 20 28 63 29 20 32 30 30 | 31 2c 20 32 30 30 32 0a | (c) 200|1, 2002.|
|000000b0| 2a 2a 0a 2a 2a 20 20 41 | 75 74 68 6f 72 3a 20 4c |**.** A|uthor: L|
|000000c0| 75 64 6f 76 69 63 20 4d | 61 72 63 6f 74 74 65 20 |udovic M|arcotte |
|000000d0| 3c 6c 75 64 6f 76 69 63 | 40 53 6f 70 68 6f 73 2e |<ludovic|@Sophos.|
|000000e0| 63 61 3e 0a 2a 2a 0a 2a | 2a 20 20 54 68 69 73 20 |ca>.**.*|* This |
|000000f0| 6c 69 62 72 61 72 79 20 | 69 73 20 66 72 65 65 20 |library |is free |
|00000100| 73 6f 66 74 77 61 72 65 | 3b 20 79 6f 75 20 63 61 |software|; you ca|
|00000110| 6e 20 72 65 64 69 73 74 | 72 69 62 75 74 65 20 69 |n redist|ribute i|
|00000120| 74 20 61 6e 64 2f 6f 72 | 0a 2a 2a 20 20 6d 6f 64 |t and/or|.** mod|
|00000130| 69 66 79 20 69 74 20 75 | 6e 64 65 72 20 74 68 65 |ify it u|nder the|
|00000140| 20 74 65 72 6d 73 20 6f | 66 20 74 68 65 20 47 4e | terms o|f the GN|
|00000150| 55 20 4c 65 73 73 65 72 | 20 47 65 6e 65 72 61 6c |U Lesser| General|
|00000160| 20 50 75 62 6c 69 63 0a | 2a 2a 20 20 4c 69 63 65 | Public.|** Lice|
|00000170| 6e 73 65 20 61 73 20 70 | 75 62 6c 69 73 68 65 64 |nse as p|ublished|
|00000180| 20 62 79 20 74 68 65 20 | 46 72 65 65 20 53 6f 66 | by the |Free Sof|
|00000190| 74 77 61 72 65 20 46 6f | 75 6e 64 61 74 69 6f 6e |tware Fo|undation|
|000001a0| 3b 20 65 69 74 68 65 72 | 0a 2a 2a 20 20 76 65 72 |; either|.** ver|
|000001b0| 73 69 6f 6e 20 32 2e 31 | 20 6f 66 20 74 68 65 20 |sion 2.1| of the |
|000001c0| 4c 69 63 65 6e 73 65 2c | 20 6f 72 20 28 61 74 20 |License,| or (at |
|000001d0| 79 6f 75 72 20 6f 70 74 | 69 6f 6e 29 20 61 6e 79 |your opt|ion) any|
|000001e0| 20 6c 61 74 65 72 20 76 | 65 72 73 69 6f 6e 2e 0a | later v|ersion..|
|000001f0| 2a 2a 20 20 0a 2a 2a 20 | 20 54 68 69 73 20 6c 69 |** .** | This li|
|00000200| 62 72 61 72 79 20 69 73 | 20 64 69 73 74 72 69 62 |brary is| distrib|
|00000210| 75 74 65 64 20 69 6e 20 | 74 68 65 20 68 6f 70 65 |uted in |the hope|
|00000220| 20 74 68 61 74 20 69 74 | 20 77 69 6c 6c 20 62 65 | that it| will be|
|00000230| 20 75 73 65 66 75 6c 2c | 0a 2a 2a 20 20 62 75 74 | useful,|.** but|
|00000240| 20 57 49 54 48 4f 55 54 | 20 41 4e 59 20 57 41 52 | WITHOUT| ANY WAR|
|00000250| 52 41 4e 54 59 3b 20 77 | 69 74 68 6f 75 74 20 65 |RANTY; w|ithout e|
|00000260| 76 65 6e 20 74 68 65 20 | 69 6d 70 6c 69 65 64 20 |ven the |implied |
|00000270| 77 61 72 72 61 6e 74 79 | 20 6f 66 0a 2a 2a 20 20 |warranty| of.** |
|00000280| 4d 45 52 43 48 41 4e 54 | 41 42 49 4c 49 54 59 20 |MERCHANT|ABILITY |
|00000290| 6f 72 20 46 49 54 4e 45 | 53 53 20 46 4f 52 20 41 |or FITNE|SS FOR A|
|000002a0| 20 50 41 52 54 49 43 55 | 4c 41 52 20 50 55 52 50 | PARTICU|LAR PURP|
|000002b0| 4f 53 45 2e 20 53 65 65 | 20 74 68 65 20 47 4e 55 |OSE. See| the GNU|
|000002c0| 0a 2a 2a 20 20 4c 65 73 | 73 65 72 20 47 65 6e 65 |.** Les|ser Gene|
|000002d0| 72 61 6c 20 50 75 62 6c | 69 63 20 4c 69 63 65 6e |ral Publ|ic Licen|
|000002e0| 73 65 20 66 6f 72 20 6d | 6f 72 65 20 64 65 74 61 |se for m|ore deta|
|000002f0| 69 6c 73 2e 0a 2a 2a 20 | 20 0a 2a 2a 20 20 59 6f |ils..** | .** Yo|
|00000300| 75 20 73 68 6f 75 6c 64 | 20 68 61 76 65 20 72 65 |u should| have re|
|00000310| 63 65 69 76 65 64 20 61 | 20 63 6f 70 79 20 6f 66 |ceived a| copy of|
|00000320| 20 74 68 65 20 47 4e 55 | 20 4c 65 73 73 65 72 20 | the GNU| Lesser |
|00000330| 47 65 6e 65 72 61 6c 20 | 50 75 62 6c 69 63 0a 2a |General |Public.*|
|00000340| 2a 20 20 4c 69 63 65 6e | 73 65 20 61 6c 6f 6e 67 |* Licen|se along|
|00000350| 20 77 69 74 68 20 74 68 | 69 73 20 6c 69 62 72 61 | with th|is libra|
|00000360| 72 79 3b 20 69 66 20 6e | 6f 74 2c 20 77 72 69 74 |ry; if n|ot, writ|
|00000370| 65 20 74 6f 20 74 68 65 | 20 46 72 65 65 20 53 6f |e to the| Free So|
|00000380| 66 74 77 61 72 65 0a 2a | 2a 20 20 46 6f 75 6e 64 |ftware.*|* Found|
|00000390| 61 74 69 6f 6e 2c 20 49 | 6e 63 2e 2c 20 35 39 20 |ation, I|nc., 59 |
|000003a0| 54 65 6d 70 6c 65 20 50 | 6c 61 63 65 2c 20 53 75 |Temple P|lace, Su|
|000003b0| 69 74 65 20 33 33 30 2c | 20 42 6f 73 74 6f 6e 2c |ite 330,| Boston,|
|000003c0| 20 4d 41 20 30 32 31 31 | 31 2d 31 33 30 37 20 55 | MA 0211|1-1307 U|
|000003d0| 53 41 0a 2a 2f 0a 23 69 | 6d 70 6f 72 74 20 3c 50 |SA.*/.#i|mport <P|
|000003e0| 61 6e 74 6f 6d 69 6d 65 | 2f 50 61 72 73 65 72 2e |antomime|/Parser.|
|000003f0| 68 3e 0a 0a 23 69 6d 70 | 6f 72 74 20 3c 50 61 6e |h>..#imp|ort <Pan|
|00000400| 74 6f 6d 69 6d 65 2f 43 | 6f 6e 73 74 61 6e 74 73 |tomime/C|onstants|
|00000410| 2e 68 3e 0a 23 69 6d 70 | 6f 72 74 20 3c 50 61 6e |.h>.#imp|ort <Pan|
|00000420| 74 6f 6d 69 6d 65 2f 4d | 65 73 73 61 67 65 2e 68 |tomime/M|essage.h|
|00000430| 3e 0a 23 69 6d 70 6f 72 | 74 20 3c 50 61 6e 74 6f |>.#impor|t <Panto|
|00000440| 6d 69 6d 65 2f 4d 69 6d | 65 55 74 69 6c 69 74 79 |mime/Mim|eUtility|
|00000450| 2e 68 3e 0a 23 69 6d 70 | 6f 72 74 20 3c 50 61 6e |.h>.#imp|ort <Pan|
|00000460| 74 6f 6d 69 6d 65 2f 4e | 53 44 61 74 61 45 78 74 |tomime/N|SDataExt|
|00000470| 65 6e 73 69 6f 6e 73 2e | 68 3e 0a 23 69 6d 70 6f |ensions.|h>.#impo|
|00000480| 72 74 20 3c 50 61 6e 74 | 6f 6d 69 6d 65 2f 4e 53 |rt <Pant|omime/NS|
|00000490| 53 74 72 69 6e 67 45 78 | 74 65 6e 73 69 6f 6e 73 |StringEx|tensions|
|000004a0| 2e 68 3e 0a 23 69 6d 70 | 6f 72 74 20 3c 50 61 6e |.h>.#imp|ort <Pan|
|000004b0| 74 6f 6d 69 6d 65 2f 65 | 6c 6d 5f 64 65 66 73 2e |tomime/e|lm_defs.|
|000004c0| 68 3e 0a 0a 23 69 6d 70 | 6f 72 74 20 3c 50 61 6e |h>..#imp|ort <Pan|
|000004d0| 74 6f 6d 69 6d 65 2f 4e | 53 44 61 74 61 45 78 74 |tomime/N|SDataExt|
|000004e0| 65 6e 73 69 6f 6e 73 2e | 68 3e 0a 0a 0a 40 69 6d |ensions.|h>...@im|
|000004f0| 70 6c 65 6d 65 6e 74 61 | 74 69 6f 6e 20 50 61 72 |plementa|tion Par|
|00000500| 73 65 72 0a 0a 2f 2f 0a | 2f 2f 0a 2f 2f 0a 2d 20 |ser..//.|//.//.- |
|00000510| 28 69 64 29 20 69 6e 69 | 74 0a 7b 0a 20 20 73 65 |(id) ini|t.{. se|
|00000520| 6c 66 20 3d 20 5b 73 75 | 70 65 72 20 69 6e 69 74 |lf = [su|per init|
|00000530| 5d 3b 0a 0a 20 20 72 65 | 74 75 72 6e 20 73 65 6c |];.. re|turn sel|
|00000540| 66 3b 0a 7d 0a 0a 0a 2f | 2f 0a 2f 2f 20 54 68 69 |f;.}.../|/.// Thi|
|00000550| 73 20 6d 65 74 68 6f 64 | 20 69 73 20 75 73 65 64 |s method| is used|
|00000560| 20 74 6f 20 70 61 72 73 | 65 20 74 68 65 20 43 6f | to pars|e the Co|
|00000570| 6e 74 65 6e 74 2d 44 65 | 73 63 72 69 70 74 69 6f |ntent-De|scriptio|
|00000580| 6e 3a 20 68 65 61 64 65 | 72 20 76 61 6c 75 65 2e |n: heade|r value.|
|00000590| 0a 2f 2f 0a 2b 20 28 76 | 6f 69 64 29 20 70 61 72 |.//.+ (v|oid) par|
|000005a0| 73 65 43 6f 6e 74 65 6e | 74 44 65 73 63 72 69 70 |seConten|tDescrip|
|000005b0| 74 69 6f 6e 3a 20 28 4e | 53 44 61 74 61 20 2a 29 |tion: (N|SData *)|
|000005c0| 20 74 68 65 4c 69 6e 65 | 0a 20 20 20 20 20 20 20 | theLine|. |
|000005d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000005e0| 20 20 20 69 6e 50 61 72 | 74 3a 20 28 50 61 72 74 | inPar|t: (Part|
|000005f0| 20 2a 29 20 74 68 65 50 | 61 72 74 0a 7b 0a 20 20 | *) theP|art.{. |
|00000600| 4e 53 44 61 74 61 20 2a | 61 44 61 74 61 3b 0a 0a |NSData *|aData;..|
|00000610| 20 20 61 44 61 74 61 20 | 3d 20 5b 5b 74 68 65 4c | aData |= [[theL|
|00000620| 69 6e 65 20 73 75 62 64 | 61 74 61 46 72 6f 6d 49 |ine subd|ataFromI|
|00000630| 6e 64 65 78 3a 20 32 31 | 5d 20 64 61 74 61 42 79 |ndex: 21|] dataBy|
|00000640| 54 72 69 6d 6d 69 6e 67 | 57 68 69 74 65 53 70 61 |Trimming|WhiteSpa|
|00000650| 63 65 73 5d 3b 0a 0a 20 | 20 69 66 20 28 61 44 61 |ces];.. | if (aDa|
|00000660| 74 61 20 26 26 20 5b 61 | 44 61 74 61 20 6c 65 6e |ta && [a|Data len|
|00000670| 67 74 68 5d 29 0a 20 20 | 20 20 7b 0a 20 20 20 20 |gth]). | {. |
|00000680| 20 20 5b 74 68 65 50 61 | 72 74 20 73 65 74 43 6f | [thePa|rt setCo|
|00000690| 6e 74 65 6e 74 44 65 73 | 63 72 69 70 74 69 6f 6e |ntentDes|cription|
|000006a0| 3a 20 5b 5b 61 44 61 74 | 61 20 64 61 74 61 46 72 |: [[aDat|a dataFr|
|000006b0| 6f 6d 51 75 6f 74 65 64 | 44 61 74 61 5d 20 61 73 |omQuoted|Data] as|
|000006c0| 63 69 69 53 74 72 69 6e | 67 5d 20 5d 3b 0a 20 20 |ciiStrin|g] ];. |
|000006d0| 20 20 7d 0a 7d 0a 0a 0a | 2f 2f 0a 2f 2f 20 54 68 | }.}...|//.// Th|
|000006e0| 69 73 20 6d 65 74 68 6f | 64 20 69 73 20 75 73 65 |is metho|d is use|
|000006f0| 64 20 74 6f 20 70 61 72 | 73 65 20 74 68 65 20 43 |d to par|se the C|
|00000700| 6f 6e 74 65 6e 74 2d 44 | 69 73 70 6f 73 69 74 69 |ontent-D|ispositi|
|00000710| 6f 6e 3a 20 68 65 61 64 | 65 72 20 76 61 6c 75 65 |on: head|er value|
|00000720| 2e 0a 2f 2f 20 49 74 20 | 73 75 70 70 6f 72 74 73 |..// It |supports|
|00000730| 20 74 68 65 20 66 6f 6c | 6c 6f 77 69 6e 67 20 70 | the fol|lowing p|
|00000740| 61 72 61 6d 65 74 65 72 | 73 3a 20 20 22 66 69 6c |arameter|s: "fil|
|00000750| 65 6e 61 6d 65 22 20 3b | 20 63 61 73 65 2d 69 6e |ename" ;| case-in|
|00000760| 73 65 6e 73 69 74 69 76 | 65 0a 2f 2f 0a 2b 20 28 |sensitiv|e.//.+ (|
|00000770| 76 6f 69 64 29 20 70 61 | 72 73 65 43 6f 6e 74 65 |void) pa|rseConte|
|00000780| 6e 74 44 69 73 70 6f 73 | 69 74 69 6f 6e 3a 20 28 |ntDispos|ition: (|
|00000790| 4e 53 44 61 74 61 20 2a | 29 20 74 68 65 4c 69 6e |NSData *|) theLin|
|000007a0| 65 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |e. | |
|000007b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 69 6e 50 61 | | inPa|
|000007c0| 72 74 3a 20 28 50 61 72 | 74 20 2a 29 20 74 68 65 |rt: (Par|t *) the|
|000007d0| 50 61 72 74 0a 7b 20 20 | 0a 20 20 69 66 20 28 20 |Part.{ |. if ( |
|000007e0| 5b 74 68 65 4c 69 6e 65 | 20 6c 65 6e 67 74 68 5d |[theLine| length]|
|000007f0| 20 3e 20 32 31 20 29 0a | 20 20 20 20 7b 0a 20 20 | > 21 ).| {. |
|00000800| 20 20 20 20 4e 53 44 61 | 74 61 20 2a 61 44 61 74 | NSDa|ta *aDat|
|00000810| 61 3b 0a 20 20 20 20 20 | 20 4e 53 52 61 6e 67 65 |a;. | NSRange|
|00000820| 20 61 52 61 6e 67 65 3b | 0a 0a 20 20 20 20 20 20 | aRange;|.. |
|00000830| 61 44 61 74 61 20 3d 20 | 5b 74 68 65 4c 69 6e 65 |aData = |[theLine|
|00000840| 20 73 75 62 64 61 74 61 | 46 72 6f 6d 49 6e 64 65 | subdata|FromInde|
|00000850| 78 3a 20 32 31 5d 3b 0a | 20 20 20 20 20 20 61 52 |x: 21];.| aR|
|00000860| 61 6e 67 65 20 3d 20 5b | 61 44 61 74 61 20 72 61 |ange = [|aData ra|
|00000870| 6e 67 65 4f 66 43 53 74 | 72 69 6e 67 3a 20 22 3b |ngeOfCSt|ring: ";|
|00000880| 22 5d 3b 0a 20 20 20 20 | 20 20 0a 20 20 20 20 20 |"];. | . |
|00000890| 20 69 66 20 28 20 61 52 | 61 6e 67 65 2e 6c 65 6e | if ( aR|ange.len|
|000008a0| 67 74 68 20 3e 20 30 20 | 29 0a 09 7b 0a 09 20 20 |gth > 0 |)..{.. |
|000008b0| 4e 53 52 61 6e 67 65 20 | 66 69 6c 65 6e 61 6d 65 |NSRange |filename|
|000008c0| 52 61 6e 67 65 3b 0a 09 | 20 20 4e 53 44 61 74 61 |Range;..| NSData|
|000008d0| 20 2a 61 46 69 6c 65 6e | 61 6d 65 3b 0a 09 20 20 | *aFilen|ame;.. |
|000008e0| 0a 09 20 20 2f 2f 20 57 | 65 20 73 65 74 20 74 68 |.. // W|e set th|
|000008f0| 65 20 63 6f 6e 74 65 6e | 74 20 64 69 73 70 6f 73 |e conten|t dispos|
|00000900| 69 74 69 6f 6e 20 74 6f | 20 74 68 69 73 20 70 61 |ition to| this pa|
|00000910| 72 74 0a 09 20 20 5b 74 | 68 65 50 61 72 74 20 73 |rt.. [t|hePart s|
|00000920| 65 74 43 6f 6e 74 65 6e | 74 44 69 73 70 6f 73 69 |etConten|tDisposi|
|00000930| 74 69 6f 6e 3a 20 5b 5b | 61 44 61 74 61 20 73 75 |tion: [[|aData su|
|00000940| 62 64 61 74 61 57 69 74 | 68 52 61 6e 67 65 3a 20 |bdataWit|hRange: |
|00000950| 4e 53 4d 61 6b 65 52 61 | 6e 67 65 28 30 2c 20 61 |NSMakeRa|nge(0, a|
|00000960| 52 61 6e 67 65 2e 6c 6f | 63 61 74 69 6f 6e 29 5d |Range.lo|cation)]|
|00000970| 20 61 73 63 69 69 53 74 | 72 69 6e 67 5d 20 5d 3b | asciiSt|ring] ];|
|00000980| 0a 09 20 20 0a 09 20 20 | 2f 2f 20 57 65 20 6e 6f |.. .. |// We no|
|00000990| 77 20 64 65 63 6f 64 65 | 20 6f 75 72 20 66 69 6c |w decode| our fil|
|000009a0| 65 6e 61 6d 65 0a 09 20 | 20 66 69 6c 65 6e 61 6d |ename.. | filenam|
|000009b0| 65 52 61 6e 67 65 20 3d | 20 5b 61 44 61 74 61 20 |eRange =| [aData |
|000009c0| 72 61 6e 67 65 4f 66 43 | 53 74 72 69 6e 67 3a 20 |rangeOfC|String: |
|000009d0| 22 66 69 6c 65 6e 61 6d | 65 22 5d 3b 0a 09 20 20 |"filenam|e"];.. |
|000009e0| 69 66 20 28 20 66 69 6c | 65 6e 61 6d 65 52 61 6e |if ( fil|enameRan|
|000009f0| 67 65 2e 6c 65 6e 67 74 | 68 20 3e 20 30 29 0a 09 |ge.lengt|h > 0)..|
|00000a00| 20 20 20 20 7b 0a 09 20 | 20 20 20 20 20 61 46 69 | {.. | aFi|
|00000a10| 6c 65 6e 61 6d 65 20 3d | 20 5b 61 44 61 74 61 20 |lename =| [aData |
|00000a20| 73 75 62 64 61 74 61 57 | 69 74 68 52 61 6e 67 65 |subdataW|ithRange|
|00000a30| 3a 20 4e 53 4d 61 6b 65 | 52 61 6e 67 65 28 66 69 |: NSMake|Range(fi|
|00000a40| 6c 65 6e 61 6d 65 52 61 | 6e 67 65 2e 6c 6f 63 61 |lenameRa|nge.loca|
|00000a50| 74 69 6f 6e 20 2b 20 66 | 69 6c 65 6e 61 6d 65 52 |tion + f|ilenameR|
|00000a60| 61 6e 67 65 2e 6c 65 6e | 67 74 68 20 2b 20 31 2c |ange.len|gth + 1,|
|00000a70| 0a 09 09 09 09 09 09 09 | 09 20 20 20 5b 61 44 61 |........|. [aDa|
|00000a80| 74 61 20 6c 65 6e 67 74 | 68 5d 20 2d 20 66 69 6c |ta lengt|h] - fil|
|00000a90| 65 6e 61 6d 65 52 61 6e | 67 65 2e 6c 6f 63 61 74 |enameRan|ge.locat|
|00000aa0| 69 6f 6e 20 2d 20 66 69 | 6c 65 6e 61 6d 65 52 61 |ion - fi|lenameRa|
|00000ab0| 6e 67 65 2e 6c 65 6e 67 | 74 68 20 2d 20 31 29 5d |nge.leng|th - 1)]|
|00000ac0| 3b 0a 09 20 20 20 20 20 | 20 61 46 69 6c 65 6e 61 |;.. | aFilena|
|00000ad0| 6d 65 20 3d 20 5b 61 46 | 69 6c 65 6e 61 6d 65 20 |me = [aF|ilename |
|00000ae0| 64 61 74 61 42 79 54 72 | 69 6d 6d 69 6e 67 57 68 |dataByTr|immingWh|
|00000af0| 69 74 65 53 70 61 63 65 | 73 5d 3b 0a 09 20 20 20 |iteSpace|s];.. |
|00000b00| 20 20 20 5b 74 68 65 50 | 61 72 74 20 73 65 74 46 | [theP|art setF|
|00000b10| 69 6c 65 6e 61 6d 65 3a | 20 5b 4d 69 6d 65 55 74 |ilename:| [MimeUt|
|00000b20| 69 6c 69 74 79 20 64 65 | 63 6f 64 65 48 65 61 64 |ility de|codeHead|
|00000b30| 65 72 3a 5b 61 46 69 6c | 65 6e 61 6d 65 20 64 61 |er:[aFil|ename da|
|00000b40| 74 61 46 72 6f 6d 51 75 | 6f 74 65 64 44 61 74 61 |taFromQu|otedData|
|00000b50| 5d 5d 20 5d 3b 0a 09 20 | 20 20 20 7d 0a 09 7d 0a |]] ];.. | }..}.|
|00000b60| 20 20 20 20 20 20 65 6c | 73 65 0a 09 7b 0a 09 20 | el|se..{.. |
|00000b70| 20 5b 74 68 65 50 61 72 | 74 20 73 65 74 43 6f 6e | [thePar|t setCon|
|00000b80| 74 65 6e 74 44 69 73 70 | 6f 73 69 74 69 6f 6e 3a |tentDisp|osition:|
|00000b90| 20 5b 5b 61 44 61 74 61 | 20 64 61 74 61 42 79 54 | [[aData| dataByT|
|00000ba0| 72 69 6d 6d 69 6e 67 57 | 68 69 74 65 53 70 61 63 |rimmingW|hiteSpac|
|00000bb0| 65 73 5d 20 61 73 63 69 | 69 53 74 72 69 6e 67 5d |es] asci|iString]|
|00000bc0| 20 5d 3b 0a 09 7d 0a 20 | 20 20 20 7d 0a 20 20 65 | ];..}. | }. e|
|00000bd0| 6c 73 65 0a 20 20 20 20 | 7b 0a 20 20 20 20 20 20 |lse. |{. |
|00000be0| 5b 74 68 65 50 61 72 74 | 20 73 65 74 43 6f 6e 74 |[thePart| setCont|
|00000bf0| 65 6e 74 44 69 73 70 6f | 73 69 74 69 6f 6e 3a 20 |entDispo|sition: |
|00000c00| 40 22 22 5d 3b 0a 20 20 | 20 20 7d 0a 7d 0a 0a 0a |@""];. | }.}...|
|00000c10| 2f 2f 0a 2f 2f 20 54 68 | 69 73 20 6d 65 74 68 6f |//.// Th|is metho|
|00000c20| 64 20 69 73 20 75 73 65 | 64 20 74 6f 20 70 61 72 |d is use|d to par|
|00000c30| 73 65 20 74 68 65 20 43 | 6f 6e 74 65 6e 74 2d 49 |se the C|ontent-I|
|00000c40| 44 3a 20 68 65 61 64 65 | 72 20 76 61 6c 75 65 2e |D: heade|r value.|
|00000c50| 0a 2f 2f 0a 2b 20 28 76 | 6f 69 64 29 20 70 61 72 |.//.+ (v|oid) par|
|00000c60| 73 65 43 6f 6e 74 65 6e | 74 49 44 3a 20 28 4e 53 |seConten|tID: (NS|
|00000c70| 44 61 74 61 20 2a 29 20 | 74 68 65 4c 69 6e 65 0a |Data *) |theLine.|
|00000c80| 09 09 20 69 6e 50 61 72 | 74 3a 20 28 50 61 72 74 |.. inPar|t: (Part|
|00000c90| 20 2a 29 20 74 68 65 50 | 61 72 74 0a 7b 0a 20 20 | *) theP|art.{. |
|00000ca0| 69 66 20 28 20 5b 74 68 | 65 4c 69 6e 65 20 6c 65 |if ( [th|eLine le|
|00000cb0| 6e 67 74 68 5d 20 3e 20 | 31 32 20 29 0a 20 20 20 |ngth] > |12 ). |
|00000cc0| 20 7b 0a 20 20 20 20 20 | 20 4e 53 44 61 74 61 20 | {. | NSData |
|00000cd0| 2a 61 44 61 74 61 3b 0a | 20 20 20 20 20 20 0a 20 |*aData;.| . |
|00000ce0| 20 20 20 20 20 61 44 61 | 74 61 20 3d 20 5b 74 68 | aDa|ta = [th|
|00000cf0| 65 4c 69 6e 65 20 73 75 | 62 64 61 74 61 46 72 6f |eLine su|bdataFro|
|00000d00| 6d 49 6e 64 65 78 3a 20 | 31 32 5d 3b 0a 20 20 20 |mIndex: |12];. |
|00000d10| 20 20 20 0a 20 20 20 20 | 20 20 69 66 20 28 20 5b | . | if ( [|
|00000d20| 61 44 61 74 61 20 68 61 | 73 43 50 72 65 66 69 78 |aData ha|sCPrefix|
|00000d30| 3a 20 22 3c 22 5d 20 26 | 26 20 5b 61 44 61 74 61 |: "<"] &|& [aData|
|00000d40| 20 68 61 73 43 53 75 66 | 66 69 78 3a 20 22 3e 22 | hasCSuf|fix: ">"|
|00000d50| 5d 20 29 0a 09 7b 0a 09 | 20 20 5b 74 68 65 50 61 |] )..{..| [thePa|
|00000d60| 72 74 20 73 65 74 43 6f | 6e 74 65 6e 74 49 44 3a |rt setCo|ntentID:|
|00000d70| 20 5b 5b 61 44 61 74 61 | 20 73 75 62 64 61 74 61 | [[aData| subdata|
|00000d80| 57 69 74 68 52 61 6e 67 | 65 3a 20 4e 53 4d 61 6b |WithRang|e: NSMak|
|00000d90| 65 52 61 6e 67 65 28 31 | 2c 20 5b 61 44 61 74 61 |eRange(1|, [aData|
|00000da0| 20 6c 65 6e 67 74 68 5d | 20 2d 32 29 5d 20 61 73 | length]| -2)] as|
|00000db0| 63 69 69 53 74 72 69 6e | 67 5d 20 5d 3b 0a 09 7d |ciiStrin|g] ];..}|
|00000dc0| 0a 20 20 20 20 20 20 65 | 6c 73 65 0a 09 7b 0a 09 |. e|lse..{..|
|00000dd0| 20 20 5b 74 68 65 50 61 | 72 74 20 73 65 74 43 6f | [thePa|rt setCo|
|00000de0| 6e 74 65 6e 74 49 44 3a | 20 5b 61 44 61 74 61 20 |ntentID:| [aData |
|00000df0| 61 73 63 69 69 53 74 72 | 69 6e 67 5d 20 5d 3b 0a |asciiStr|ing] ];.|
|00000e00| 09 7d 0a 20 20 20 20 7d | 0a 20 20 65 6c 73 65 0a |.}. }|. else.|
|00000e10| 20 20 20 20 7b 0a 20 20 | 20 20 20 20 5b 74 68 65 | {. | [the|
|00000e20| 50 61 72 74 20 73 65 74 | 43 6f 6e 74 65 6e 74 49 |Part set|ContentI|
|00000e30| 44 3a 20 40 22 22 5d 3b | 0a 20 20 20 20 7d 0a 7d |D: @""];|. }.}|
|00000e40| 0a 0a 2f 2f 0a 2f 2f 20 | 54 68 69 73 20 6d 65 74 |..//.// |This met|
|00000e50| 68 6f 64 20 69 73 20 75 | 73 65 64 20 74 6f 20 70 |hod is u|sed to p|
|00000e60| 61 72 73 65 20 74 68 65 | 20 43 6f 6e 74 65 6e 74 |arse the| Content|
|00000e70| 2d 54 72 61 6e 73 66 65 | 72 2d 45 6e 63 6f 64 69 |-Transfe|r-Encodi|
|00000e80| 6e 67 3a 20 68 65 61 64 | 65 72 20 76 61 6c 75 65 |ng: head|er value|
|00000e90| 2e 0a 2f 2f 0a 2f 2f 20 | 49 74 20 73 75 70 70 6f |..//.// |It suppo|
|00000ea0| 72 74 73 3a 20 22 37 62 | 69 74 22 20 28 6f 72 20 |rts: "7b|it" (or |
|00000eb0| 6e 6f 6e 65 29 20 3b 20 | 20 63 61 73 65 2d 69 6e |none) ; | case-in|
|00000ec0| 73 65 6e 73 69 74 69 76 | 65 0a 2f 2f 20 20 20 20 |sensitiv|e.// |
|00000ed0| 20 20 20 20 20 20 20 20 | 20 20 22 71 75 6f 74 65 | | "quote|
|00000ee0| 64 2d 70 72 69 6e 74 61 | 62 6c 65 22 0a 2f 2f 20 |d-printa|ble".// |
|00000ef0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 22 62 61 | | "ba|
|00000f00| 73 65 36 34 22 0a 2f 2f | 20 20 20 20 20 20 20 20 |se64".//| |
|00000f10| 20 20 20 20 20 20 22 38 | 62 69 74 22 0a 2f 2f 20 | "8|bit".// |
|00000f20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 22 62 69 | | "bi|
|00000f30| 6e 61 72 79 22 0a 2f 2f | 0a 2b 20 28 76 6f 69 64 |nary".//|.+ (void|
|00000f40| 29 20 70 61 72 73 65 43 | 6f 6e 74 65 6e 74 54 72 |) parseC|ontentTr|
|00000f50| 61 6e 73 66 65 72 45 6e | 63 6f 64 69 6e 67 3a 20 |ansferEn|coding: |
|00000f60| 28 4e 53 44 61 74 61 20 | 2a 29 20 74 68 65 4c 69 |(NSData |*) theLi|
|00000f70| 6e 65 0a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |ne. | |
|00000f80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000f90| 20 20 69 6e 50 61 72 74 | 3a 20 28 50 61 72 74 20 | inPart|: (Part |
|00000fa0| 2a 29 20 74 68 65 50 61 | 72 74 0a 7b 0a 20 20 69 |*) thePa|rt.{. i|
|00000fb0| 66 20 28 20 5b 74 68 65 | 4c 69 6e 65 20 6c 65 6e |f ( [the|Line len|
|00000fc0| 67 74 68 5d 20 3e 20 32 | 37 20 29 0a 20 20 20 20 |gth] > 2|7 ). |
|00000fd0| 7b 0a 20 20 20 20 20 20 | 4e 53 44 61 74 61 20 2a |{. |NSData *|
|00000fe0| 61 44 61 74 61 3b 0a 20 | 20 20 20 20 20 0a 20 20 |aData;. | . |
|00000ff0| 20 20 20 20 61 44 61 74 | 61 20 3d 20 5b 5b 74 68 | aDat|a = [[th|
|00001000| 65 4c 69 6e 65 20 73 75 | 62 64 61 74 61 46 72 6f |eLine su|bdataFro|
|00001010| 6d 49 6e 64 65 78 3a 20 | 32 37 5d 20 64 61 74 61 |mIndex: |27] data|
|00001020| 42 79 54 72 69 6d 6d 69 | 6e 67 57 68 69 74 65 53 |ByTrimmi|ngWhiteS|
|00001030| 70 61 63 65 73 5d 3b 0a | 20 20 20 20 20 20 0a 20 |paces];.| . |
|00001040| 20 20 20 20 20 69 66 20 | 28 5b 61 44 61 74 61 20 | if |([aData |
|00001050| 63 61 73 65 49 6e 73 65 | 6e 73 69 74 69 76 65 43 |caseInse|nsitiveC|
|00001060| 43 6f 6d 70 61 72 65 3a | 20 22 71 75 6f 74 65 64 |Compare:| "quoted|
|00001070| 2d 70 72 69 6e 74 61 62 | 6c 65 22 5d 20 3d 3d 20 |-printab|le"] == |
|00001080| 4e 53 4f 72 64 65 72 65 | 64 53 61 6d 65 29 0a 09 |NSOrdere|dSame)..|
|00001090| 7b 0a 09 20 20 5b 74 68 | 65 50 61 72 74 20 73 65 |{.. [th|ePart se|
|000010a0| 74 43 6f 6e 74 65 6e 74 | 54 72 61 6e 73 66 65 72 |tContent|Transfer|
|000010b0| 45 6e 63 6f 64 69 6e 67 | 3a 20 51 55 4f 54 45 44 |Encoding|: QUOTED|
|000010c0| 50 52 49 4e 54 41 42 4c | 45 5d 3b 0a 09 7d 0a 20 |PRINTABL|E];..}. |
|000010d0| 20 20 20 20 20 65 6c 73 | 65 20 69 66 20 28 5b 61 | els|e if ([a|
|000010e0| 44 61 74 61 20 63 61 73 | 65 49 6e 73 65 6e 73 69 |Data cas|eInsensi|
|000010f0| 74 69 76 65 43 43 6f 6d | 70 61 72 65 3a 20 22 62 |tiveCCom|pare: "b|
|00001100| 61 73 65 36 34 22 5d 20 | 3d 3d 20 4e 53 4f 72 64 |ase64"] |== NSOrd|
|00001110| 65 72 65 64 53 61 6d 65 | 29 0a 09 7b 0a 09 20 20 |eredSame|)..{.. |
|00001120| 5b 74 68 65 50 61 72 74 | 20 73 65 74 43 6f 6e 74 |[thePart| setCont|
|00001130| 65 6e 74 54 72 61 6e 73 | 66 65 72 45 6e 63 6f 64 |entTrans|ferEncod|
|00001140| 69 6e 67 3a 20 42 41 53 | 45 36 34 5d 3b 0a 09 7d |ing: BAS|E64];..}|
|00001150| 0a 20 20 20 20 20 20 65 | 6c 73 65 20 69 66 20 28 |. e|lse if (|
|00001160| 5b 61 44 61 74 61 20 63 | 61 73 65 49 6e 73 65 6e |[aData c|aseInsen|
|00001170| 73 69 74 69 76 65 43 43 | 6f 6d 70 61 72 65 3a 20 |sitiveCC|ompare: |
|00001180| 22 38 62 69 74 22 5d 20 | 3d 3d 20 4e 53 4f 72 64 |"8bit"] |== NSOrd|
|00001190| 65 72 65 64 53 61 6d 65 | 29 0a 09 7b 0a 09 20 20 |eredSame|)..{.. |
|000011a0| 5b 74 68 65 50 61 72 74 | 20 73 65 74 43 6f 6e 74 |[thePart| setCont|
|000011b0| 65 6e 74 54 72 61 6e 73 | 66 65 72 45 6e 63 6f 64 |entTrans|ferEncod|
|000011c0| 69 6e 67 3a 20 45 49 47 | 48 54 42 49 54 5d 3b 0a |ing: EIG|HTBIT];.|
|000011d0| 09 7d 0a 20 20 20 20 20 | 20 65 6c 73 65 20 69 66 |.}. | else if|
|000011e0| 20 28 5b 61 44 61 74 61 | 20 63 61 73 65 49 6e 73 | ([aData| caseIns|
|000011f0| 65 6e 73 69 74 69 76 65 | 43 43 6f 6d 70 61 72 65 |ensitive|CCompare|
|00001200| 3a 20 22 62 69 6e 61 72 | 79 22 5d 20 3d 3d 20 4e |: "binar|y"] == N|
|00001210| 53 4f 72 64 65 72 65 64 | 53 61 6d 65 29 0a 09 7b |SOrdered|Same)..{|
|00001220| 0a 09 20 20 5b 74 68 65 | 50 61 72 74 20 73 65 74 |.. [the|Part set|
|00001230| 43 6f 6e 74 65 6e 74 54 | 72 61 6e 73 66 65 72 45 |ContentT|ransferE|
|00001240| 6e 63 6f 64 69 6e 67 3a | 20 42 49 4e 41 52 59 5d |ncoding:| BINARY]|
|00001250| 3b 0a 09 7d 0a 20 20 20 | 20 20 20 65 6c 73 65 0a |;..}. | else.|
|00001260| 09 7b 0a 09 20 20 5b 74 | 68 65 50 61 72 74 20 73 |.{.. [t|hePart s|
|00001270| 65 74 43 6f 6e 74 65 6e | 74 54 72 61 6e 73 66 65 |etConten|tTransfe|
|00001280| 72 45 6e 63 6f 64 69 6e | 67 3a 20 4e 4f 4e 45 5d |rEncodin|g: NONE]|
|00001290| 3b 0a 09 7d 0a 20 20 20 | 20 7d 0a 20 20 65 6c 73 |;..}. | }. els|
|000012a0| 65 0a 20 20 20 20 7b 0a | 20 20 20 20 20 20 5b 74 |e. {.| [t|
|000012b0| 68 65 50 61 72 74 20 73 | 65 74 43 6f 6e 74 65 6e |hePart s|etConten|
|000012c0| 74 54 72 61 6e 73 66 65 | 72 45 6e 63 6f 64 69 6e |tTransfe|rEncodin|
|000012d0| 67 3a 20 4e 4f 4e 45 5d | 3b 0a 20 20 20 20 7d 0a |g: NONE]|;. }.|
|000012e0| 7d 0a 0a 2f 2f 0a 2f 2f | 20 54 68 69 73 20 6d 65 |}..//.//| This me|
|000012f0| 74 68 6f 64 20 6d 75 73 | 74 20 70 61 72 73 65 3a |thod mus|t parse:|
|00001300| 20 20 0a 2f 2f 20 2d 20 | 43 6f 6e 74 65 6e 74 2d | .// - |Content-|
|00001310| 54 79 70 65 3a 20 74 65 | 78 74 2f 70 6c 61 69 6e |Type: te|xt/plain|
|00001320| 0a 2f 2f 20 2d 20 43 6f | 6e 74 65 6e 74 2d 54 79 |.// - Co|ntent-Ty|
|00001330| 70 65 3a 20 54 65 78 74 | 2f 70 6c 61 69 6e 3b 0a |pe: Text|/plain;.|
|00001340| 2f 2f 20 2d 20 43 6f 6e | 74 65 6e 74 2d 54 79 70 |// - Con|tent-Typ|
|00001350| 65 3a 20 74 65 78 74 2f | 70 6c 61 69 6e 3b 20 63 |e: text/|plain; c|
|00001360| 68 61 72 73 65 74 3d 22 | 69 73 6f 2d 38 38 35 39 |harset="|iso-8859|
|00001370| 2d 31 22 0a 2f 2f 20 2d | 20 43 6f 6e 74 65 6e 74 |-1".// -| Content|
|00001380| 2d 54 79 70 65 3a 20 74 | 65 78 74 0a 2f 2f 20 2d |-Type: t|ext.// -|
|00001390| 20 43 6f 6e 74 65 6e 74 | 2d 54 79 70 65 3a 20 20 | Content|-Type: |
|000013a0| 20 20 74 65 78 74 2f 70 | 6c 61 69 6e 0a 2f 2f 0a | text/p|lain.//.|
|000013b0| 2f 2f 20 54 68 69 73 20 | 6d 65 74 68 6f 64 20 61 |// This |method a|
|000013c0| 6c 73 6f 20 70 61 72 73 | 65 20 28 69 66 20 77 65 |lso pars|e (if we|
|000013d0| 20 6e 65 65 64 20 74 6f | 6f 29 20 74 68 65 20 66 | need to|o) the f|
|000013e0| 6f 6c 6c 6f 77 69 6e 67 | 20 70 61 72 61 6d 65 74 |ollowing| paramet|
|000013f0| 65 72 73 3a 20 0a 2f 2f | 20 20 2d 20 62 6f 75 6e |ers: .//| - boun|
|00001400| 64 61 72 79 20 28 69 66 | 20 43 6f 6e 74 65 6e 74 |dary (if| Content|
|00001410| 2d 54 79 70 65 20 69 73 | 20 6d 75 6c 74 69 70 61 |-Type is| multipa|
|00001420| 72 74 2f 2a 29 0a 2f 2f | 20 20 2d 20 63 68 61 72 |rt/*).//| - char|
|00001430| 73 65 74 20 20 28 69 66 | 20 43 6f 6e 74 65 6e 74 |set (if| Content|
|00001440| 2d 54 79 70 65 20 69 73 | 20 74 65 78 74 2f 70 6c |-Type is| text/pl|
|00001450| 61 69 6e 29 0a 2f 2f 20 | 20 2d 20 6e 61 6d 65 0a |ain).// | - name.|
|00001460| 2f 2f 0a 2b 20 28 76 6f | 69 64 29 20 70 61 72 73 |//.+ (vo|id) pars|
|00001470| 65 43 6f 6e 74 65 6e 74 | 54 79 70 65 3a 20 28 4e |eContent|Type: (N|
|00001480| 53 44 61 74 61 20 2a 29 | 20 74 68 65 4c 69 6e 65 |SData *)| theLine|
|00001490| 0a 09 09 20 20 20 69 6e | 50 61 72 74 3a 20 28 50 |... in|Part: (P|
|000014a0| 61 72 74 20 2a 29 20 74 | 68 65 50 61 72 74 0a 7b |art *) t|hePart.{|
|000014b0| 0a 20 20 4e 53 52 61 6e | 67 65 20 61 52 61 6e 67 |. NSRan|ge aRang|
|000014c0| 65 3b 0a 20 20 4e 53 44 | 61 74 61 20 2a 61 44 61 |e;. NSD|ata *aDa|
|000014d0| 74 61 3b 0a 20 20 69 6e | 74 20 78 3b 0a 0a 20 20 |ta;. in|t x;.. |
|000014e0| 69 66 20 28 21 20 28 5b | 74 68 65 4c 69 6e 65 20 |if (! ([|theLine |
|000014f0| 6c 65 6e 67 74 68 5d 20 | 3e 20 31 34 29 20 29 0a |length] |> 14) ).|
|00001500| 20 20 20 20 7b 0a 20 20 | 20 20 20 20 5b 74 68 65 | {. | [the|
|00001510| 50 61 72 74 20 73 65 74 | 43 6f 6e 74 65 6e 74 54 |Part set|ContentT|
|00001520| 79 70 65 3a 20 40 22 74 | 65 78 74 2f 70 6c 61 69 |ype: @"t|ext/plai|
|00001530| 6e 22 5d 3b 0a 20 20 20 | 20 20 20 72 65 74 75 72 |n"];. | retur|
|00001540| 6e 3b 0a 20 20 20 20 7d | 0a 0a 20 20 61 44 61 74 |n;. }|.. aDat|
|00001550| 61 20 3d 20 5b 5b 74 68 | 65 4c 69 6e 65 20 73 75 |a = [[th|eLine su|
|00001560| 62 64 61 74 61 46 72 6f | 6d 49 6e 64 65 78 3a 20 |bdataFro|mIndex: |
|00001570| 31 34 5d 20 64 61 74 61 | 42 79 54 72 69 6d 6d 69 |14] data|ByTrimmi|
|00001580| 6e 67 57 68 69 74 65 53 | 70 61 63 65 73 5d 3b 0a |ngWhiteS|paces];.|
|00001590| 0a 20 20 2f 2f 20 57 65 | 20 66 69 72 73 74 20 73 |. // We| first s|
|000015a0| 6b 69 70 20 74 68 65 20 | 70 61 72 61 6d 65 74 65 |kip the |paramete|
|000015b0| 72 73 2c 20 69 66 20 77 | 65 20 6e 65 65 64 20 74 |rs, if w|e need t|
|000015c0| 6f 0a 20 20 78 20 3d 20 | 5b 61 44 61 74 61 20 69 |o. x = |[aData i|
|000015d0| 6e 64 65 78 4f 66 43 68 | 61 72 61 63 74 65 72 3a |ndexOfCh|aracter:|
|000015e0| 20 27 3b 27 5d 3b 0a 20 | 20 69 66 20 28 78 20 3e | ';'];. | if (x >|
|000015f0| 20 30 29 0a 20 20 20 20 | 7b 0a 20 20 20 20 20 20 | 0). |{. |
|00001600| 61 44 61 74 61 20 3d 20 | 5b 61 44 61 74 61 20 73 |aData = |[aData s|
|00001610| 75 62 64 61 74 61 54 6f | 49 6e 64 65 78 3a 20 78 |ubdataTo|Index: x|
|00001620| 5d 3b 0a 20 20 20 20 7d | 20 0a 20 20 0a 20 20 2f |];. }| . . /|
|00001630| 2f 20 57 65 20 73 65 65 | 20 69 66 20 74 68 65 72 |/ We see| if ther|
|00001640| 65 27 73 20 61 20 73 75 | 62 74 79 70 65 20 73 70 |e's a su|btype sp|
|00001650| 65 63 69 66 69 65 64 20 | 66 6f 72 20 74 65 78 74 |ecified |for text|
|00001660| 2c 20 69 66 20 6e 6f 6e | 65 20 77 61 73 20 73 70 |, if non|e was sp|
|00001670| 65 63 69 66 69 65 64 2c | 20 77 65 20 61 70 70 65 |ecified,| we appe|
|00001680| 6e 64 20 22 2f 70 6c 61 | 69 6e 22 0a 20 20 78 20 |nd "/pla|in". x |
|00001690| 3d 20 5b 61 44 61 74 61 | 20 69 6e 64 65 78 4f 66 |= [aData| indexOf|
|000016a0| 43 68 61 72 61 63 74 65 | 72 3a 20 27 2f 27 5d 3b |Characte|r: '/'];|
|000016b0| 0a 0a 20 20 69 66 20 28 | 78 20 3c 20 30 20 26 26 |.. if (|x < 0 &&|
|000016c0| 20 5b 61 44 61 74 61 20 | 68 61 73 43 61 73 65 49 | [aData |hasCaseI|
|000016d0| 6e 73 65 6e 73 69 74 69 | 76 65 43 50 72 65 66 69 |nsensiti|veCPrefi|
|000016e0| 78 3a 20 22 74 65 78 74 | 22 5d 29 0a 20 20 20 20 |x: "text|"]). |
|000016f0| 7b 0a 20 20 20 20 20 20 | 5b 74 68 65 50 61 72 74 |{. |[thePart|
|00001700| 20 73 65 74 43 6f 6e 74 | 65 6e 74 54 79 70 65 3a | setCont|entType:|
|00001710| 20 5b 5b 5b 61 44 61 74 | 61 20 61 73 63 69 69 53 | [[[aDat|a asciiS|
|00001720| 74 72 69 6e 67 5d 20 73 | 74 72 69 6e 67 42 79 41 |tring] s|tringByA|
|00001730| 70 70 65 6e 64 69 6e 67 | 53 74 72 69 6e 67 3a 20 |ppending|String: |
|00001740| 40 22 2f 70 6c 61 69 6e | 22 5d 20 6c 6f 77 65 72 |@"/plain|"] lower|
|00001750| 63 61 73 65 53 74 72 69 | 6e 67 5d 20 5d 3b 0a 20 |caseStri|ng] ];. |
|00001760| 20 20 20 7d 0a 20 20 65 | 6c 73 65 0a 20 20 20 20 | }. e|lse. |
|00001770| 7b 0a 20 20 20 20 20 20 | 5b 74 68 65 50 61 72 74 |{. |[thePart|
|00001780| 20 73 65 74 43 6f 6e 74 | 65 6e 74 54 79 70 65 3a | setCont|entType:|
|00001790| 20 5b 5b 61 44 61 74 61 | 20 61 73 63 69 69 53 74 | [[aData| asciiSt|
|000017a0| 72 69 6e 67 5d 20 6c 6f | 77 65 72 63 61 73 65 53 |ring] lo|wercaseS|
|000017b0| 74 72 69 6e 67 5d 20 5d | 3b 0a 20 20 20 20 7d 0a |tring] ]|;. }.|
|000017c0| 0a 20 20 2f 2f 0a 20 20 | 2f 2f 20 57 65 20 64 65 |. //. |// We de|
|000017d0| 63 6f 64 65 20 6f 75 72 | 20 62 6f 75 6e 64 61 72 |code our| boundar|
|000017e0| 79 20 28 69 66 20 77 65 | 20 6e 65 65 64 20 74 6f |y (if we| need to|
|000017f0| 29 0a 20 20 2f 2f 0a 20 | 20 61 52 61 6e 67 65 20 |). //. | aRange |
|00001800| 3d 20 5b 74 68 65 4c 69 | 6e 65 20 72 61 6e 67 65 |= [theLi|ne range|
|00001810| 4f 66 43 53 74 72 69 6e | 67 3a 20 22 62 6f 75 6e |OfCStrin|g: "boun|
|00001820| 64 61 72 79 22 0a 09 09 | 20 20 20 20 6f 70 74 69 |dary"...| opti|
|00001830| 6f 6e 73 3a 20 4e 53 43 | 61 73 65 49 6e 73 65 6e |ons: NSC|aseInsen|
|00001840| 73 69 74 69 76 65 53 65 | 61 72 63 68 5d 3b 0a 20 |sitiveSe|arch];. |
|00001850| 20 0a 20 20 69 66 20 28 | 61 52 61 6e 67 65 2e 6c | . if (|aRange.l|
|00001860| 65 6e 67 74 68 20 3e 20 | 30 29 0a 20 20 20 20 7b |ength > |0). {|
|00001870| 0a 20 20 20 20 20 20 5b | 74 68 65 50 61 72 74 20 |. [|thePart |
|00001880| 73 65 74 42 6f 75 6e 64 | 61 72 79 3a 20 5b 50 61 |setBound|ary: [Pa|
|00001890| 72 73 65 72 20 5f 70 61 | 72 61 6d 65 74 65 72 56 |rser _pa|rameterV|
|000018a0| 61 6c 75 65 55 73 69 6e | 67 4c 69 6e 65 3a 20 74 |alueUsin|gLine: t|
|000018b0| 68 65 4c 69 6e 65 0a 09 | 09 09 09 20 20 20 20 72 |heLine..|... r|
|000018c0| 61 6e 67 65 3a 20 61 52 | 61 6e 67 65 5d 20 5d 3b |ange: aR|ange] ];|
|000018d0| 0a 20 20 20 20 7d 0a 0a | 20 20 2f 2f 0a 20 20 2f |. }..| //. /|
|000018e0| 2f 20 57 65 20 64 65 63 | 6f 64 65 20 6f 75 72 20 |/ We dec|ode our |
|000018f0| 63 68 61 72 73 65 74 20 | 28 69 66 20 77 65 20 6e |charset |(if we n|
|00001900| 65 65 64 20 74 6f 29 0a | 20 20 2f 2f 0a 20 20 61 |eed to).| //. a|
|00001910| 52 61 6e 67 65 20 3d 20 | 5b 74 68 65 4c 69 6e 65 |Range = |[theLine|
|00001920| 20 72 61 6e 67 65 4f 66 | 43 53 74 72 69 6e 67 3a | rangeOf|CString:|
|00001930| 20 22 63 68 61 72 73 65 | 74 22 0a 09 09 20 20 20 | "charse|t"... |
|00001940| 20 6f 70 74 69 6f 6e 73 | 3a 20 4e 53 43 61 73 65 | options|: NSCase|
|00001950| 49 6e 73 65 6e 73 69 74 | 69 76 65 53 65 61 72 63 |Insensit|iveSearc|
|00001960| 68 5d 3b 0a 20 20 0a 20 | 20 69 66 20 28 61 52 61 |h];. . | if (aRa|
|00001970| 6e 67 65 2e 6c 65 6e 67 | 74 68 20 3e 20 30 29 0a |nge.leng|th > 0).|
|00001980| 20 20 20 20 7b 0a 20 20 | 20 20 20 20 5b 74 68 65 | {. | [the|
|00001990| 50 61 72 74 20 73 65 74 | 43 68 61 72 73 65 74 3a |Part set|Charset:|
|000019a0| 20 5b 5b 50 61 72 73 65 | 72 20 5f 70 61 72 61 6d | [[Parse|r _param|
|000019b0| 65 74 65 72 56 61 6c 75 | 65 55 73 69 6e 67 4c 69 |eterValu|eUsingLi|
|000019c0| 6e 65 3a 20 74 68 65 4c | 69 6e 65 0a 09 09 09 09 |ne: theL|ine.....|
|000019d0| 20 20 20 72 61 6e 67 65 | 3a 20 61 52 61 6e 67 65 | range|: aRange|
|000019e0| 5d 20 61 73 63 69 69 53 | 74 72 69 6e 67 5d 20 5d |] asciiS|tring] ]|
|000019f0| 3b 0a 20 20 20 20 7d 0a | 20 20 0a 20 20 0a 20 20 |;. }.| . . |
|00001a00| 2f 2f 0a 20 20 2f 2f 20 | 57 65 20 64 65 63 6f 64 |//. // |We decod|
|00001a10| 65 20 6f 75 72 20 66 6f | 72 6d 61 74 20 28 69 66 |e our fo|rmat (if|
|00001a20| 20 77 65 20 6e 65 65 64 | 20 74 6f 29 2e 20 53 65 | we need| to). Se|
|00001a30| 65 20 52 46 43 32 36 34 | 36 2e 0a 20 20 2f 2f 0a |e RFC264|6.. //.|
|00001a40| 20 20 61 52 61 6e 67 65 | 20 3d 20 5b 74 68 65 4c | aRange| = [theL|
|00001a50| 69 6e 65 20 72 61 6e 67 | 65 4f 66 43 53 74 72 69 |ine rang|eOfCStri|
|00001a60| 6e 67 3a 20 22 66 6f 72 | 6d 61 74 22 0a 09 09 20 |ng: "for|mat"... |
|00001a70| 20 20 20 6f 70 74 69 6f | 6e 73 3a 20 4e 53 43 61 | optio|ns: NSCa|
|00001a80| 73 65 49 6e 73 65 6e 73 | 69 74 69 76 65 53 65 61 |seInsens|itiveSea|
|00001a90| 72 63 68 5d 3b 0a 20 20 | 0a 20 20 69 66 20 28 61 |rch];. |. if (a|
|00001aa0| 52 61 6e 67 65 2e 6c 65 | 6e 67 74 68 20 3e 20 30 |Range.le|ngth > 0|
|00001ab0| 29 0a 20 20 20 20 7b 0a | 20 20 20 20 20 20 4e 53 |). {.| NS|
|00001ac0| 44 61 74 61 20 2a 61 46 | 6f 72 6d 61 74 3b 0a 20 |Data *aF|ormat;. |
|00001ad0| 20 20 20 20 20 0a 20 20 | 20 20 20 20 61 46 6f 72 | . | aFor|
|00001ae0| 6d 61 74 20 3d 20 5b 50 | 61 72 73 65 72 20 5f 70 |mat = [P|arser _p|
|00001af0| 61 72 61 6d 65 74 65 72 | 56 61 6c 75 65 55 73 69 |arameter|ValueUsi|
|00001b00| 6e 67 4c 69 6e 65 3a 20 | 74 68 65 4c 69 6e 65 0a |ngLine: |theLine.|
|00001b10| 09 09 09 72 61 6e 67 65 | 3a 20 61 52 61 6e 67 65 |...range|: aRange|
|00001b20| 5d 3b 0a 0a 20 20 20 20 | 20 20 69 66 20 28 5b 61 |];.. | if ([a|
|00001b30| 46 6f 72 6d 61 74 20 63 | 61 73 65 49 6e 73 65 6e |Format c|aseInsen|
|00001b40| 73 69 74 69 76 65 43 43 | 6f 6d 70 61 72 65 3a 20 |sitiveCC|ompare: |
|00001b50| 22 66 6c 6f 77 65 64 22 | 5d 20 3d 3d 20 4e 53 4f |"flowed"|] == NSO|
|00001b60| 72 64 65 72 65 64 53 61 | 6d 65 29 0a 09 7b 0a 09 |rderedSa|me)..{..|
|00001b70| 20 20 5b 74 68 65 50 61 | 72 74 20 73 65 74 46 6f | [thePa|rt setFo|
|00001b80| 72 6d 61 74 3a 20 46 4f | 52 4d 41 54 5f 46 4c 4f |rmat: FO|RMAT_FLO|
|00001b90| 57 45 44 5d 3b 0a 09 7d | 0a 20 20 20 20 20 20 65 |WED];..}|. e|
|00001ba0| 6c 73 65 0a 09 7b 0a 09 | 20 20 5b 74 68 65 50 61 |lse..{..| [thePa|
|00001bb0| 72 74 20 73 65 74 46 6f | 72 6d 61 74 3a 20 46 4f |rt setFo|rmat: FO|
|00001bc0| 52 4d 41 54 5f 55 4e 4b | 4e 4f 57 4e 5d 3b 0a 09 |RMAT_UNK|NOWN];..|
|00001bd0| 7d 0a 20 20 20 20 7d 0a | 20 20 65 6c 73 65 0a 20 |}. }.| else. |
|00001be0| 20 20 20 7b 0a 20 20 20 | 20 20 20 5b 74 68 65 50 | {. | [theP|
|00001bf0| 61 72 74 20 73 65 74 46 | 6f 72 6d 61 74 3a 20 46 |art setF|ormat: F|
|00001c00| 4f 52 4d 41 54 5f 55 4e | 4b 4e 4f 57 4e 5d 3b 0a |ORMAT_UN|KNOWN];.|
|00001c10| 20 20 20 20 7d 0a 0a 20 | 20 2f 2f 0a 20 20 2f 2f | }.. | //. //|
|00001c20| 20 57 65 20 64 65 63 6f | 64 65 20 74 68 65 20 70 | We deco|de the p|
|00001c30| 61 72 61 6d 65 74 65 72 | 20 22 6e 61 6d 65 22 20 |arameter| "name" |
|00001c40| 69 69 66 20 74 68 65 20 | 74 68 65 50 61 72 74 20 |iif the |thePart |
|00001c50| 69 73 20 61 6e 20 69 6e | 73 74 61 6e 63 65 20 6f |is an in|stance o|
|00001c60| 66 20 4d 69 6d 65 42 6f | 64 79 50 61 72 74 0a 20 |f MimeBo|dyPart. |
|00001c70| 20 2f 2f 0a 20 20 69 66 | 20 28 20 5b 74 68 65 50 | //. if| ( [theP|
|00001c80| 61 72 74 20 69 73 4b 69 | 6e 64 4f 66 43 6c 61 73 |art isKi|ndOfClas|
|00001c90| 73 3a 20 5b 4d 69 6d 65 | 42 6f 64 79 50 61 72 74 |s: [Mime|BodyPart|
|00001ca0| 20 63 6c 61 73 73 5d 5d | 20 29 0a 20 20 7b 0a 20 | class]]| ). {. |
|00001cb0| 20 20 20 61 52 61 6e 67 | 65 20 3d 20 5b 74 68 65 | aRang|e = [the|
|00001cc0| 4c 69 6e 65 20 72 61 6e | 67 65 4f 66 43 53 74 72 |Line ran|geOfCStr|
|00001cd0| 69 6e 67 3a 20 22 6e 61 | 6d 65 22 0a 09 09 20 20 |ing: "na|me"... |
|00001ce0| 20 20 20 20 6f 70 74 69 | 6f 6e 73 3a 20 4e 53 43 | opti|ons: NSC|
|00001cf0| 61 73 65 49 6e 73 65 6e | 73 69 74 69 76 65 53 65 |aseInsen|sitiveSe|
|00001d00| 61 72 63 68 5d 3b 0a 0a | 20 20 20 20 69 66 20 28 |arch];..| if (|
|00001d10| 61 52 61 6e 67 65 2e 6c | 65 6e 67 74 68 20 3e 20 |aRange.l|ength > |
|00001d20| 30 29 0a 20 20 20 20 20 | 20 7b 0a 09 4e 53 44 61 |0). | {..NSDa|
|00001d30| 74 61 20 2a 61 46 69 6c | 65 6e 61 6d 65 3b 0a 0a |ta *aFil|ename;..|
|00001d40| 09 61 46 69 6c 65 6e 61 | 6d 65 20 3d 20 5b 50 61 |.aFilena|me = [Pa|
|00001d50| 72 73 65 72 20 5f 70 61 | 72 61 6d 65 74 65 72 56 |rser _pa|rameterV|
|00001d60| 61 6c 75 65 55 73 69 6e | 67 4c 69 6e 65 3a 20 74 |alueUsin|gLine: t|
|00001d70| 68 65 4c 69 6e 65 0a 09 | 09 09 20 20 20 20 72 61 |heLine..|.. ra|
|00001d80| 6e 67 65 3a 20 61 52 61 | 6e 67 65 5d 3b 0a 09 0a |nge: aRa|nge];...|
|00001d90| 09 5b 74 68 65 50 61 72 | 74 20 73 65 74 46 69 6c |.[thePar|t setFil|
|00001da0| 65 6e 61 6d 65 3a 20 5b | 4d 69 6d 65 55 74 69 6c |ename: [|MimeUtil|
|00001db0| 69 74 79 20 64 65 63 6f | 64 65 48 65 61 64 65 72 |ity deco|deHeader|
|00001dc0| 3a 20 61 46 69 6c 65 6e | 61 6d 65 5d 5d 3b 0a 20 |: aFilen|ame]];. |
|00001dd0| 20 20 20 20 20 7d 0a 20 | 20 7d 0a 7d 0a 0a 0a 2f | }. | }.}.../|
|00001de0| 2f 0a 2f 2f 20 54 68 69 | 73 20 6d 65 74 68 6f 64 |/.// Thi|s method|
|00001df0| 20 69 73 20 75 73 65 64 | 20 74 6f 20 70 61 72 73 | is used| to pars|
|00001e00| 65 20 74 68 65 20 44 61 | 74 65 3a 20 68 65 61 64 |e the Da|te: head|
|00001e10| 65 72 20 76 61 6c 75 65 | 2e 0a 2f 2f 0a 2b 20 28 |er value|..//.+ (|
|00001e20| 76 6f 69 64 29 20 70 61 | 72 73 65 44 61 74 65 3a |void) pa|rseDate:|
|00001e30| 20 28 4e 53 44 61 74 61 | 20 2a 29 20 74 68 65 4c | (NSData| *) theL|
|00001e40| 69 6e 65 0a 09 20 69 6e | 4d 65 73 73 61 67 65 3a |ine.. in|Message:|
|00001e50| 20 28 4d 65 73 73 61 67 | 65 20 2a 29 20 74 68 65 | (Messag|e *) the|
|00001e60| 4d 65 73 73 61 67 65 0a | 7b 0a 20 20 69 66 20 28 |Message.|{. if (|
|00001e70| 20 5b 74 68 65 4c 69 6e | 65 20 6c 65 6e 67 74 68 | [theLin|e length|
|00001e80| 5d 20 3e 20 36 20 29 0a | 20 20 20 20 7b 0a 20 20 |] > 6 ).| {. |
|00001e90| 20 20 20 20 73 74 72 75 | 63 74 20 68 65 61 64 65 | stru|ct heade|
|00001ea0| 72 5f 72 65 63 20 68 64 | 72 3b 0a 20 20 20 20 20 |r_rec hd|r;. |
|00001eb0| 20 4e 53 43 61 6c 65 6e | 64 61 72 44 61 74 65 20 | NSCalen|darDate |
|00001ec0| 2a 61 44 61 74 65 3b 0a | 20 20 20 20 20 20 4e 53 |*aDate;.| NS|
|00001ed0| 44 61 74 61 20 2a 61 44 | 61 74 61 3b 0a 20 20 20 |Data *aD|ata;. |
|00001ee0| 20 20 20 0a 20 20 20 20 | 20 20 61 44 61 74 61 20 | . | aData |
|00001ef0| 3d 20 5b 74 68 65 4c 69 | 6e 65 20 73 75 62 64 61 |= [theLi|ne subda|
|00001f00| 74 61 46 72 6f 6d 49 6e | 64 65 78 3a 20 36 5d 3b |taFromIn|dex: 6];|
|00001f10| 0a 20 20 20 20 20 20 0a | 20 20 20 20 20 20 69 66 |. .| if|
|00001f20| 20 28 20 70 61 72 73 65 | 5f 61 72 70 61 5f 64 61 | ( parse|_arpa_da|
|00001f30| 74 65 28 5b 61 44 61 74 | 61 20 63 53 74 72 69 6e |te([aDat|a cStrin|
|00001f40| 67 5d 2c 20 26 68 64 72 | 29 20 29 0a 09 7b 0a 09 |g], &hdr|) )..{..|
|00001f50| 20 20 61 44 61 74 65 20 | 3d 20 5b 4e 53 43 61 6c | aDate |= [NSCal|
|00001f60| 65 6e 64 61 72 44 61 74 | 65 20 64 61 74 65 57 69 |endarDat|e dateWi|
|00001f70| 74 68 54 69 6d 65 49 6e | 74 65 72 76 61 6c 53 69 |thTimeIn|tervalSi|
|00001f80| 6e 63 65 31 39 37 30 3a | 20 68 64 72 2e 74 69 6d |nce1970:| hdr.tim|
|00001f90| 65 5f 73 65 6e 74 5d 3b | 0a 09 20 20 5b 61 44 61 |e_sent];|.. [aDa|
|00001fa0| 74 65 20 73 65 74 54 69 | 6d 65 5a 6f 6e 65 3a 20 |te setTi|meZone: |
|00001fb0| 5b 4e 53 54 69 6d 65 5a | 6f 6e 65 20 74 69 6d 65 |[NSTimeZ|one time|
|00001fc0| 5a 6f 6e 65 46 6f 72 53 | 65 63 6f 6e 64 73 46 72 |ZoneForS|econdsFr|
|00001fd0| 6f 6d 47 4d 54 3a 20 68 | 64 72 2e 74 7a 5f 6f 66 |omGMT: h|dr.tz_of|
|00001fe0| 66 73 65 74 5d 5d 3b 0a | 09 20 20 5b 74 68 65 4d |fset]];.|. [theM|
|00001ff0| 65 73 73 61 67 65 20 73 | 65 74 52 65 63 65 69 76 |essage s|etReceiv|
|00002000| 65 64 44 61 74 65 3a 20 | 61 44 61 74 65 5d 3b 0a |edDate: |aDate];.|
|00002010| 09 7d 0a 20 20 20 20 7d | 0a 7d 0a 0a 0a 2f 2f 0a |.}. }|.}...//.|
|00002020| 2f 2f 20 54 68 69 73 20 | 6d 65 74 68 6f 64 20 69 |// This |method i|
|00002030| 73 20 75 73 65 64 20 74 | 6f 20 70 61 72 73 65 20 |s used t|o parse |
|00002040| 74 68 65 20 54 6f 3a 20 | 43 63 3a 20 42 63 63 3a |the To: |Cc: Bcc:|
|00002050| 20 68 65 61 64 65 72 73 | 20 76 61 6c 75 65 2e 0a | headers| value..|
|00002060| 2f 2f 0a 2b 20 28 76 6f | 69 64 29 20 70 61 72 73 |//.+ (vo|id) pars|
|00002070| 65 44 65 73 74 69 6e 61 | 74 69 6f 6e 3a 20 28 4e |eDestina|tion: (N|
|00002080| 53 44 61 74 61 20 2a 29 | 20 74 68 65 4c 69 6e 65 |SData *)| theLine|
|00002090| 0a 09 09 20 20 66 6f 72 | 54 79 70 65 3a 20 28 69 |... for|Type: (i|
|000020a0| 6e 74 29 20 74 68 65 54 | 79 70 65 0a 09 09 69 6e |nt) theT|ype...in|
|000020b0| 4d 65 73 73 61 67 65 3a | 20 28 4d 65 73 73 61 67 |Message:| (Messag|
|000020c0| 65 20 2a 29 20 74 68 65 | 4d 65 73 73 61 67 65 0a |e *) the|Message.|
|000020d0| 7b 20 20 0a 20 20 49 6e | 74 65 72 6e 65 74 41 64 |{ . In|ternetAd|
|000020e0| 64 72 65 73 73 20 2a 61 | 6e 49 6e 74 65 72 6e 65 |dress *a|nInterne|
|000020f0| 74 41 64 64 72 65 73 73 | 3b 0a 20 20 63 68 61 72 |tAddress|;. char|
|00002100| 20 61 62 75 66 5b 31 32 | 38 5d 2c 20 6e 62 75 66 | abuf[12|8], nbuf|
|00002110| 5b 31 32 38 5d 2c 20 2a | 63 66 20 3d 20 22 22 2c |[128], *|cf = "",|
|00002120| 20 2a 6e 66 3b 0a 20 20 | 69 6e 74 20 72 63 3b 0a | *nf;. |int rc;.|
|00002130| 0a 20 20 69 66 20 28 74 | 68 65 54 79 70 65 20 3d |. if (t|heType =|
|00002140| 3d 20 42 43 43 20 26 26 | 20 28 5b 74 68 65 4c 69 |= BCC &&| ([theLi|
|00002150| 6e 65 20 6c 65 6e 67 74 | 68 5d 20 3e 20 35 29 29 |ne lengt|h] > 5))|
|00002160| 0a 20 20 20 20 7b 0a 20 | 20 20 20 20 20 5b 74 68 |. {. | [th|
|00002170| 65 4d 65 73 73 61 67 65 | 20 61 64 64 48 65 61 64 |eMessage| addHead|
|00002180| 65 72 3a 40 22 42 63 63 | 22 20 77 69 74 68 56 61 |er:@"Bcc|" withVa|
|00002190| 6c 75 65 3a 40 22 22 5d | 3b 0a 20 20 20 20 20 20 |lue:@""]|;. |
|000021a0| 63 66 20 3d 20 28 63 68 | 61 72 2a 29 5b 5b 74 68 |cf = (ch|ar*)[[th|
|000021b0| 65 4c 69 6e 65 20 73 75 | 62 64 61 74 61 46 72 6f |eLine su|bdataFro|
|000021c0| 6d 49 6e 64 65 78 3a 20 | 35 5d 20 63 53 74 72 69 |mIndex: |5] cStri|
|000021d0| 6e 67 5d 3b 0a 20 20 20 | 20 7d 0a 20 20 65 6c 73 |ng];. | }. els|
|000021e0| 65 20 69 66 20 28 74 68 | 65 54 79 70 65 20 3d 3d |e if (th|eType ==|
|000021f0| 20 43 43 20 26 26 20 28 | 5b 74 68 65 4c 69 6e 65 | CC && (|[theLine|
|00002200| 20 6c 65 6e 67 74 68 5d | 20 3e 20 34 29 29 0a 20 | length]| > 4)). |
|00002210| 20 20 20 7b 0a 20 20 20 | 20 20 20 5b 74 68 65 4d | {. | [theM|
|00002220| 65 73 73 61 67 65 20 61 | 64 64 48 65 61 64 65 72 |essage a|ddHeader|
|00002230| 3a 40 22 43 63 22 20 77 | 69 74 68 56 61 6c 75 65 |:@"Cc" w|ithValue|
|00002240| 3a 40 22 22 5d 3b 0a 20 | 20 20 20 20 20 63 66 20 |:@""];. | cf |
|00002250| 3d 20 28 63 68 61 72 2a | 29 5b 5b 74 68 65 4c 69 |= (char*|)[[theLi|
|00002260| 6e 65 20 73 75 62 64 61 | 74 61 46 72 6f 6d 49 6e |ne subda|taFromIn|
|00002270| 64 65 78 3a 20 34 5d 20 | 63 53 74 72 69 6e 67 5d |dex: 4] |cString]|
|00002280| 3b 0a 20 20 20 20 7d 0a | 20 20 65 6c 73 65 20 69 |;. }.| else i|
|00002290| 66 20 28 74 68 65 54 79 | 70 65 20 3d 3d 20 54 4f |f (theTy|pe == TO|
|000022a0| 20 26 26 20 28 5b 74 68 | 65 4c 69 6e 65 20 6c 65 | && ([th|eLine le|
|000022b0| 6e 67 74 68 5d 20 3e 20 | 34 29 29 0a 20 20 20 20 |ngth] > |4)). |
|000022c0| 7b 0a 20 20 20 20 20 20 | 5b 74 68 65 4d 65 73 73 |{. |[theMess|
|000022d0| 61 67 65 20 61 64 64 48 | 65 61 64 65 72 3a 40 22 |age addH|eader:@"|
|000022e0| 54 6f 22 20 77 69 74 68 | 56 61 6c 75 65 3a 40 22 |To" with|Value:@"|
|000022f0| 22 5d 3b 0a 20 20 20 20 | 20 20 63 66 20 3d 20 28 |"];. | cf = (|
|00002300| 63 68 61 72 2a 29 5b 5b | 74 68 65 4c 69 6e 65 20 |char*)[[|theLine |
|00002310| 73 75 62 64 61 74 61 46 | 72 6f 6d 49 6e 64 65 78 |subdataF|romIndex|
|00002320| 3a 20 34 5d 20 63 53 74 | 72 69 6e 67 5d 3b 0a 20 |: 4] cSt|ring];. |
|00002330| 20 20 20 7d 0a 20 20 65 | 6c 73 65 20 69 66 20 28 | }. e|lse if (|
|00002340| 74 68 65 54 79 70 65 20 | 3d 3d 20 52 45 53 45 4e |theType |== RESEN|
|00002350| 54 5f 42 43 43 20 26 26 | 20 28 5b 74 68 65 4c 69 |T_BCC &&| ([theLi|
|00002360| 6e 65 20 6c 65 6e 67 74 | 68 5d 20 3e 20 31 32 29 |ne lengt|h] > 12)|
|00002370| 29 0a 20 20 20 20 7b 0a | 20 20 20 20 20 20 5b 74 |). {.| [t|
|00002380| 68 65 4d 65 73 73 61 67 | 65 20 61 64 64 48 65 61 |heMessag|e addHea|
|00002390| 64 65 72 3a 40 22 52 65 | 73 65 6e 74 2d 42 63 63 |der:@"Re|sent-Bcc|
|000023a0| 22 20 77 69 74 68 56 61 | 6c 75 65 3a 40 22 22 5d |" withVa|lue:@""]|
|000023b0| 3b 0a 20 20 20 20 20 20 | 63 66 20 3d 20 28 63 68 |;. |cf = (ch|
|000023c0| 61 72 2a 29 5b 5b 74 68 | 65 4c 69 6e 65 20 73 75 |ar*)[[th|eLine su|
|000023d0| 62 64 61 74 61 46 72 6f | 6d 49 6e 64 65 78 3a 20 |bdataFro|mIndex: |
|000023e0| 31 32 5d 20 63 53 74 72 | 69 6e 67 5d 3b 0a 20 20 |12] cStr|ing];. |
|000023f0| 20 20 7d 0a 20 20 65 6c | 73 65 20 69 66 20 28 74 | }. el|se if (t|
|00002400| 68 65 54 79 70 65 20 3d | 3d 20 52 45 53 45 4e 54 |heType =|= RESENT|
|00002410| 5f 43 43 20 26 26 20 28 | 5b 74 68 65 4c 69 6e 65 |_CC && (|[theLine|
|00002420| 20 6c 65 6e 67 74 68 5d | 20 3e 20 31 31 29 29 0a | length]| > 11)).|
|00002430| 20 20 20 20 7b 0a 20 20 | 20 20 20 20 5b 74 68 65 | {. | [the|
|00002440| 4d 65 73 73 61 67 65 20 | 61 64 64 48 65 61 64 65 |Message |addHeade|
|00002450| 72 3a 40 22 52 65 73 65 | 6e 74 2d 43 63 22 20 77 |r:@"Rese|nt-Cc" w|
|00002460| 69 74 68 56 61 6c 75 65 | 3a 40 22 22 5d 3b 0a 20 |ithValue|:@""];. |
|00002470| 20 20 20 20 20 63 66 20 | 3d 20 28 63 68 61 72 2a | cf |= (char*|
|00002480| 29 5b 5b 74 68 65 4c 69 | 6e 65 20 73 75 62 64 61 |)[[theLi|ne subda|
|00002490| 74 61 46 72 6f 6d 49 6e | 64 65 78 3a 20 31 31 5d |taFromIn|dex: 11]|
|000024a0| 20 63 53 74 72 69 6e 67 | 5d 3b 0a 20 20 20 20 7d | cString|];. }|
|000024b0| 0a 20 20 65 6c 73 65 20 | 69 66 20 28 74 68 65 54 |. else |if (theT|
|000024c0| 79 70 65 20 3d 3d 20 52 | 45 53 45 4e 54 5f 54 4f |ype == R|ESENT_TO|
|000024d0| 20 26 26 20 28 5b 74 68 | 65 4c 69 6e 65 20 6c 65 | && ([th|eLine le|
|000024e0| 6e 67 74 68 5d 20 3e 20 | 31 31 29 29 0a 20 20 20 |ngth] > |11)). |
|000024f0| 20 7b 0a 20 20 20 20 20 | 20 5b 74 68 65 4d 65 73 | {. | [theMes|
|00002500| 73 61 67 65 20 61 64 64 | 48 65 61 64 65 72 3a 40 |sage add|Header:@|
|00002510| 22 52 65 73 65 6e 74 2d | 54 6f 22 20 77 69 74 68 |"Resent-|To" with|
|00002520| 56 61 6c 75 65 3a 40 22 | 22 5d 3b 0a 20 20 20 20 |Value:@"|"];. |
|00002530| 20 20 63 66 20 3d 20 28 | 63 68 61 72 2a 29 5b 5b | cf = (|char*)[[|
|00002540| 74 68 65 4c 69 6e 65 20 | 73 75 62 64 61 74 61 46 |theLine |subdataF|
|00002550| 72 6f 6d 49 6e 64 65 78 | 3a 20 31 31 5d 20 63 53 |romIndex|: 11] cS|
|00002560| 74 72 69 6e 67 5d 3b 0a | 20 20 20 20 7d 0a 0a 20 |tring];.| }.. |
|00002570| 20 77 68 69 6c 65 20 28 | 2a 63 66 20 21 3d 20 27 | while (|*cf != '|
|00002580| 5c 30 27 29 0a 20 20 20 | 20 7b 0a 20 20 20 20 20 |\0'). | {. |
|00002590| 20 72 63 20 3d 20 70 61 | 72 73 65 5f 61 72 70 61 | rc = pa|rse_arpa|
|000025a0| 5f 6d 61 69 6c 62 6f 78 | 28 63 66 2c 20 61 62 75 |_mailbox|(cf, abu|
|000025b0| 66 2c 20 73 69 7a 65 6f | 66 28 61 62 75 66 29 2c |f, sizeo|f(abuf),|
|000025c0| 20 6e 62 75 66 2c 20 73 | 69 7a 65 6f 66 28 6e 62 | nbuf, s|izeof(nb|
|000025d0| 75 66 29 2c 20 26 6e 66 | 29 3b 0a 20 20 20 20 20 |uf), &nf|);. |
|000025e0| 20 69 66 20 28 72 63 20 | 3c 20 30 29 0a 09 7b 0a | if (rc |< 0)..{.|
|000025f0| 09 20 20 61 6e 49 6e 74 | 65 72 6e 65 74 41 64 64 |. anInt|ernetAdd|
|00002600| 72 65 73 73 20 3d 20 5b | 5b 49 6e 74 65 72 6e 65 |ress = [|[Interne|
|00002610| 74 41 64 64 72 65 73 73 | 20 61 6c 6c 6f 63 5d 20 |tAddress| alloc] |
|00002620| 69 6e 69 74 5d 3b 0a 0a | 09 20 20 5b 61 6e 49 6e |init];..|. [anIn|
|00002630| 74 65 72 6e 65 74 41 64 | 64 72 65 73 73 20 73 65 |ternetAd|dress se|
|00002640| 74 50 65 72 73 6f 6e 61 | 6c 3a 20 5b 4d 69 6d 65 |tPersona|l: [Mime|
|00002650| 55 74 69 6c 69 74 79 20 | 64 65 63 6f 64 65 48 65 |Utility |decodeHe|
|00002660| 61 64 65 72 3a 5b 4e 53 | 44 61 74 61 20 64 61 74 |ader:[NS|Data dat|
|00002670| 61 57 69 74 68 43 53 74 | 72 69 6e 67 3a 63 66 5d |aWithCSt|ring:cf]|
|00002680| 5d 5d 3b 0a 09 20 20 5b | 61 6e 49 6e 74 65 72 6e |]];.. [|anIntern|
|00002690| 65 74 41 64 64 72 65 73 | 73 20 73 65 74 54 79 70 |etAddres|s setTyp|
|000026a0| 65 3a 20 74 68 65 54 79 | 70 65 5d 3b 0a 09 20 20 |e: theTy|pe];.. |
|000026b0| 5b 74 68 65 4d 65 73 73 | 61 67 65 20 61 64 64 54 |[theMess|age addT|
|000026c0| 6f 52 65 63 69 70 69 65 | 6e 74 73 3a 20 61 6e 49 |oRecipie|nts: anI|
|000026d0| 6e 74 65 72 6e 65 74 41 | 64 64 72 65 73 73 5d 3b |nternetA|ddress];|
|000026e0| 0a 0a 09 20 20 52 45 4c | 45 41 53 45 28 61 6e 49 |... REL|EASE(anI|
|000026f0| 6e 74 65 72 6e 65 74 41 | 64 64 72 65 73 73 29 3b |nternetA|ddress);|
|00002700| 0a 09 7d 0a 20 20 20 20 | 20 20 65 6c 73 65 0a 09 |..}. | else..|
|00002710| 7b 0a 09 20 20 61 6e 49 | 6e 74 65 72 6e 65 74 41 |{.. anI|nternetA|
|00002720| 64 64 72 65 73 73 20 3d | 20 5b 5b 49 6e 74 65 72 |ddress =| [[Inter|
|00002730| 6e 65 74 41 64 64 72 65 | 73 73 20 61 6c 6c 6f 63 |netAddre|ss alloc|
|00002740| 5d 20 69 6e 69 74 5d 3b | 0a 0a 09 20 20 5b 61 6e |] init];|... [an|
|00002750| 49 6e 74 65 72 6e 65 74 | 41 64 64 72 65 73 73 20 |Internet|Address |
|00002760| 73 65 74 50 65 72 73 6f | 6e 61 6c 3a 20 5b 4d 69 |setPerso|nal: [Mi|
|00002770| 6d 65 55 74 69 6c 69 74 | 79 20 64 65 63 6f 64 65 |meUtilit|y decode|
|00002780| 48 65 61 64 65 72 3a 5b | 4e 53 44 61 74 61 20 64 |Header:[|NSData d|
|00002790| 61 74 61 57 69 74 68 43 | 53 74 72 69 6e 67 3a 6e |ataWithC|String:n|
|000027a0| 62 75 66 5d 5d 5d 3b 0a | 09 20 20 5b 61 6e 49 6e |buf]]];.|. [anIn|
|000027b0| 74 65 72 6e 65 74 41 64 | 64 72 65 73 73 20 73 65 |ternetAd|dress se|
|000027c0| 74 41 64 64 72 65 73 73 | 3a 20 5b 4e 53 53 74 72 |tAddress|: [NSStr|
|000027d0| 69 6e 67 20 73 74 72 69 | 6e 67 57 69 74 68 43 53 |ing stri|ngWithCS|
|000027e0| 74 72 69 6e 67 3a 20 61 | 62 75 66 20 5d 5d 3b 0a |tring: a|buf ]];.|
|000027f0| 09 20 20 5b 61 6e 49 6e | 74 65 72 6e 65 74 41 64 |. [anIn|ternetAd|
|00002800| 64 72 65 73 73 20 73 65 | 74 54 79 70 65 3a 20 74 |dress se|tType: t|
|00002810| 68 65 54 79 70 65 5d 3b | 0a 09 20 20 5b 74 68 65 |heType];|.. [the|
|00002820| 4d 65 73 73 61 67 65 20 | 61 64 64 54 6f 52 65 63 |Message |addToRec|
|00002830| 69 70 69 65 6e 74 73 3a | 20 61 6e 49 6e 74 65 72 |ipients:| anInter|
|00002840| 6e 65 74 41 64 64 72 65 | 73 73 5d 3b 0a 0a 09 20 |netAddre|ss];... |
|00002850| 20 52 45 4c 45 41 53 45 | 28 61 6e 49 6e 74 65 72 | RELEASE|(anInter|
|00002860| 6e 65 74 41 64 64 72 65 | 73 73 29 3b 0a 09 7d 0a |netAddre|ss);..}.|
|00002870| 20 20 20 20 20 20 63 66 | 20 3d 20 6e 66 3b 0a 20 | cf| = nf;. |
|00002880| 20 20 20 7d 0a 7d 0a 0a | 2f 2f 0a 2f 2f 20 54 68 | }.}..|//.// Th|
|00002890| 69 73 20 6d 65 74 68 6f | 64 20 69 73 20 75 73 65 |is metho|d is use|
|000028a0| 64 20 74 6f 20 70 61 72 | 73 65 20 74 68 65 20 46 |d to par|se the F|
|000028b0| 72 6f 6d 3a 20 68 65 61 | 64 65 72 20 76 61 6c 75 |rom: hea|der valu|
|000028c0| 65 2e 0a 2f 2f 0a 2b 20 | 28 76 6f 69 64 29 20 70 |e..//.+ |(void) p|
|000028d0| 61 72 73 65 46 72 6f 6d | 3a 20 28 4e 53 44 61 74 |arseFrom|: (NSDat|
|000028e0| 61 20 2a 29 20 74 68 65 | 4c 69 6e 65 0a 09 20 69 |a *) the|Line.. i|
|000028f0| 6e 4d 65 73 73 61 67 65 | 3a 20 28 4d 65 73 73 61 |nMessage|: (Messa|
|00002900| 67 65 20 2a 29 20 74 68 | 65 4d 65 73 73 61 67 65 |ge *) th|eMessage|
|00002910| 0a 7b 0a 20 20 49 6e 74 | 65 72 6e 65 74 41 64 64 |.{. Int|ernetAdd|
|00002920| 72 65 73 73 20 2a 61 6e | 49 6e 74 65 72 6e 65 74 |ress *an|Internet|
|00002930| 41 64 64 72 65 73 73 3b | 0a 20 20 63 68 61 72 20 |Address;|. char |
|00002940| 61 62 75 66 5b 31 32 38 | 5d 2c 20 6e 62 75 66 5b |abuf[128|], nbuf[|
|00002950| 31 32 38 5d 2c 20 2a 63 | 66 2c 20 2a 6e 66 3b 0a |128], *c|f, *nf;.|
|00002960| 20 20 69 6e 74 20 72 63 | 3b 0a 20 20 0a 20 20 69 | int rc|;. . i|
|00002970| 66 20 28 20 21 28 5b 74 | 68 65 4c 69 6e 65 20 6c |f ( !([t|heLine l|
|00002980| 65 6e 67 74 68 5d 20 3e | 20 36 29 20 29 0a 20 20 |ength] >| 6) ). |
|00002990| 20 20 7b 0a 20 20 20 20 | 20 20 72 65 74 75 72 6e | {. | return|
|000029a0| 3b 0a 20 20 20 20 7d 0a | 20 0a 20 20 63 66 20 3d |;. }.| . cf =|
|000029b0| 20 28 63 68 61 72 2a 29 | 5b 5b 74 68 65 4c 69 6e | (char*)|[[theLin|
|000029c0| 65 20 73 75 62 64 61 74 | 61 46 72 6f 6d 49 6e 64 |e subdat|aFromInd|
|000029d0| 65 78 3a 20 36 5d 20 63 | 53 74 72 69 6e 67 5d 3b |ex: 6] c|String];|
|000029e0| 0a 20 20 72 63 20 3d 20 | 70 61 72 73 65 5f 61 72 |. rc = |parse_ar|
|000029f0| 70 61 5f 6d 61 69 6c 62 | 6f 78 28 63 66 2c 20 61 |pa_mailb|ox(cf, a|
|00002a00| 62 75 66 2c 20 73 69 7a | 65 6f 66 28 61 62 75 66 |buf, siz|eof(abuf|
|00002a10| 29 2c 20 6e 62 75 66 2c | 20 73 69 7a 65 6f 66 28 |), nbuf,| sizeof(|
|00002a20| 6e 62 75 66 29 2c 20 26 | 6e 66 29 3b 0a 0a 20 20 |nbuf), &|nf);.. |
|00002a30| 61 6e 49 6e 74 65 72 6e | 65 74 41 64 64 72 65 73 |anIntern|etAddres|
|00002a40| 73 20 3d 20 5b 5b 49 6e | 74 65 72 6e 65 74 41 64 |s = [[In|ternetAd|
|00002a50| 64 72 65 73 73 20 61 6c | 6c 6f 63 5d 20 69 6e 69 |dress al|loc] ini|
|00002a60| 74 5d 3b 0a 0a 20 20 69 | 66 20 28 72 63 20 3c 20 |t];.. i|f (rc < |
|00002a70| 30 29 0a 20 20 20 20 7b | 0a 20 20 20 20 20 20 5b |0). {|. [|
|00002a80| 61 6e 49 6e 74 65 72 6e | 65 74 41 64 64 72 65 73 |anIntern|etAddres|
|00002a90| 73 20 73 65 74 50 65 72 | 73 6f 6e 61 6c 3a 20 5b |s setPer|sonal: [|
|00002aa0| 4d 69 6d 65 55 74 69 6c | 69 74 79 20 64 65 63 6f |MimeUtil|ity deco|
|00002ab0| 64 65 48 65 61 64 65 72 | 3a 5b 4e 53 44 61 74 61 |deHeader|:[NSData|
|00002ac0| 20 64 61 74 61 57 69 74 | 68 43 53 74 72 69 6e 67 | dataWit|hCString|
|00002ad0| 3a 63 66 5d 5d 20 5d 3b | 0a 20 20 20 20 7d 0a 20 |:cf]] ];|. }. |
|00002ae0| 20 65 6c 73 65 0a 20 20 | 20 20 7b 0a 20 20 20 20 | else. | {. |
|00002af0| 20 20 5b 61 6e 49 6e 74 | 65 72 6e 65 74 41 64 64 | [anInt|ernetAdd|
|00002b00| 72 65 73 73 20 73 65 74 | 50 65 72 73 6f 6e 61 6c |ress set|Personal|
|00002b10| 3a 20 5b 4d 69 6d 65 55 | 74 69 6c 69 74 79 20 64 |: [MimeU|tility d|
|00002b20| 65 63 6f 64 65 48 65 61 | 64 65 72 3a 5b 4e 53 44 |ecodeHea|der:[NSD|
|00002b30| 61 74 61 20 64 61 74 61 | 57 69 74 68 43 53 74 72 |ata data|WithCStr|
|00002b40| 69 6e 67 3a 6e 62 75 66 | 5d 5d 20 5d 3b 0a 20 20 |ing:nbuf|]] ];. |
|00002b50| 20 20 20 20 5b 61 6e 49 | 6e 74 65 72 6e 65 74 41 | [anI|nternetA|
|00002b60| 64 64 72 65 73 73 20 73 | 65 74 41 64 64 72 65 73 |ddress s|etAddres|
|00002b70| 73 3a 20 5b 4e 53 53 74 | 72 69 6e 67 20 73 74 72 |s: [NSSt|ring str|
|00002b80| 69 6e 67 57 69 74 68 43 | 53 74 72 69 6e 67 3a 61 |ingWithC|String:a|
|00002b90| 62 75 66 5d 20 5d 3b 0a | 20 20 20 20 7d 0a 20 20 |buf] ];.| }. |
|00002ba0| 0a 20 20 5b 74 68 65 4d | 65 73 73 61 67 65 20 73 |. [theM|essage s|
|00002bb0| 65 74 46 72 6f 6d 3a 20 | 61 6e 49 6e 74 65 72 6e |etFrom: |anIntern|
|00002bc0| 65 74 41 64 64 72 65 73 | 73 5d 3b 0a 0a 20 20 52 |etAddres|s];.. R|
|00002bd0| 45 4c 45 41 53 45 28 61 | 6e 49 6e 74 65 72 6e 65 |ELEASE(a|nInterne|
|00002be0| 74 41 64 64 72 65 73 73 | 29 3b 0a 7d 0a 0a 0a 2f |tAddress|);.}.../|
|00002bf0| 2f 0a 2f 2f 20 54 68 69 | 73 20 6d 65 74 68 6f 64 |/.// Thi|s method|
|00002c00| 20 69 73 20 75 73 65 64 | 20 74 6f 20 70 61 72 73 | is used| to pars|
|00002c10| 65 20 74 68 65 20 4d 65 | 73 73 61 67 65 2d 49 44 |e the Me|ssage-ID|
|00002c20| 3a 20 68 65 61 64 65 72 | 20 76 61 6c 75 65 2e 0a |: header| value..|
|00002c30| 2f 2f 0a 2b 20 28 76 6f | 69 64 29 20 70 61 72 73 |//.+ (vo|id) pars|
|00002c40| 65 4d 65 73 73 61 67 65 | 49 44 3a 20 28 4e 53 44 |eMessage|ID: (NSD|
|00002c50| 61 74 61 20 2a 29 20 74 | 68 65 4c 69 6e 65 0a 09 |ata *) t|heLine..|
|00002c60| 20 20 20 20 20 20 69 6e | 4d 65 73 73 61 67 65 3a | in|Message:|
|00002c70| 20 28 4d 65 73 73 61 67 | 65 20 2a 29 20 74 68 65 | (Messag|e *) the|
|00002c80| 4d 65 73 73 61 67 65 0a | 7b 0a 20 20 4e 53 44 61 |Message.|{. NSDa|
|00002c90| 74 61 20 2a 61 44 61 74 | 61 3b 0a 0a 20 20 69 66 |ta *aDat|a;.. if|
|00002ca0| 20 28 20 21 28 5b 74 68 | 65 4c 69 6e 65 20 6c 65 | ( !([th|eLine le|
|00002cb0| 6e 67 74 68 5d 20 3e 20 | 31 32 29 20 29 0a 20 20 |ngth] > |12) ). |
|00002cc0| 20 20 7b 0a 20 20 20 20 | 20 20 72 65 74 75 72 6e | {. | return|
|00002cd0| 3b 0a 20 20 20 20 7d 0a | 0a 20 20 61 44 61 74 61 |;. }.|. aData|
|00002ce0| 20 3d 20 5b 74 68 65 4c | 69 6e 65 20 73 75 62 64 | = [theL|ine subd|
|00002cf0| 61 74 61 46 72 6f 6d 49 | 6e 64 65 78 3a 20 31 32 |ataFromI|ndex: 12|
|00002d00| 5d 3b 0a 20 20 0a 20 20 | 5b 74 68 65 4d 65 73 73 |];. . |[theMess|
|00002d10| 61 67 65 20 73 65 74 4d | 65 73 73 61 67 65 49 44 |age setM|essageID|
|00002d20| 3a 20 5b 61 44 61 74 61 | 20 61 73 63 69 69 53 74 |: [aData| asciiSt|
|00002d30| 72 69 6e 67 5d 20 5d 3b | 20 20 20 20 0a 7d 0a 0a |ring] ];| .}..|
|00002d40| 0a 2f 2f 0a 2f 2f 20 54 | 68 69 73 20 6d 65 74 68 |.//.// T|his meth|
|00002d50| 6f 64 20 69 73 20 75 73 | 65 64 20 74 6f 20 70 61 |od is us|ed to pa|
|00002d60| 72 73 65 20 74 68 65 20 | 4d 49 4d 45 2d 56 65 72 |rse the |MIME-Ver|
|00002d70| 73 69 6f 6e 3a 20 68 65 | 61 64 65 72 20 76 61 6c |sion: he|ader val|
|00002d80| 75 65 2e 0a 2f 2f 0a 2b | 20 28 76 6f 69 64 29 20 |ue..//.+| (void) |
|00002d90| 70 61 72 73 65 4d 69 6d | 65 56 65 72 73 69 6f 6e |parseMim|eVersion|
|00002da0| 3a 20 28 4e 53 44 61 74 | 61 20 2a 29 20 74 68 65 |: (NSDat|a *) the|
|00002db0| 4c 69 6e 65 0a 09 09 69 | 6e 4d 65 73 73 61 67 65 |Line...i|nMessage|
|00002dc0| 3a 20 28 4d 65 73 73 61 | 67 65 20 2a 29 20 74 68 |: (Messa|ge *) th|
|00002dd0| 65 4d 65 73 73 61 67 65 | 0a 7b 0a 20 20 69 66 20 |eMessage|.{. if |
|00002de0| 28 20 5b 74 68 65 4c 69 | 6e 65 20 6c 65 6e 67 74 |( [theLi|ne lengt|
|00002df0| 68 5d 20 3e 20 31 34 20 | 29 0a 20 20 20 20 7b 0a |h] > 14 |). {.|
|00002e00| 20 20 20 20 20 20 5b 74 | 68 65 4d 65 73 73 61 67 | [t|heMessag|
|00002e10| 65 20 73 65 74 4d 69 6d | 65 56 65 72 73 69 6f 6e |e setMim|eVersion|
|00002e20| 3a 20 5b 5b 74 68 65 4c | 69 6e 65 20 73 75 62 64 |: [[theL|ine subd|
|00002e30| 61 74 61 46 72 6f 6d 49 | 6e 64 65 78 3a 20 31 34 |ataFromI|ndex: 14|
|00002e40| 5d 20 61 73 63 69 69 53 | 74 72 69 6e 67 5d 20 5d |] asciiS|tring] ]|
|00002e50| 3b 0a 20 20 20 20 7d 0a | 7d 0a 0a 0a 2f 2f 0a 2f |;. }.|}...//./|
|00002e60| 2f 20 54 68 69 73 20 6d | 65 74 68 6f 64 20 69 73 |/ This m|ethod is|
|00002e70| 20 75 73 65 64 20 74 6f | 20 70 61 72 73 65 20 74 | used to| parse t|
|00002e80| 68 65 20 52 65 66 65 72 | 65 6e 63 65 73 3a 20 68 |he Refer|ences: h|
|00002e90| 65 61 64 65 72 20 76 61 | 6c 75 65 2e 0a 2f 2f 0a |eader va|lue..//.|
|00002ea0| 2b 20 28 76 6f 69 64 29 | 20 70 61 72 73 65 52 65 |+ (void)| parseRe|
|00002eb0| 66 65 72 65 6e 63 65 73 | 3a 20 28 4e 53 44 61 74 |ferences|: (NSDat|
|00002ec0| 61 20 2a 29 20 74 68 65 | 4c 69 6e 65 0a 20 20 20 |a *) the|Line. |
|00002ed0| 20 20 20 20 20 20 20 20 | 20 20 20 20 69 6e 4d 65 | | inMe|
|00002ee0| 73 73 61 67 65 3a 20 28 | 4d 65 73 73 61 67 65 20 |ssage: (|Message |
|00002ef0| 2a 29 20 74 68 65 4d 65 | 73 73 61 67 65 0a 7b 0a |*) theMe|ssage.{.|
|00002f00| 20 20 69 66 20 28 20 5b | 74 68 65 4c 69 6e 65 20 | if ( [|theLine |
|00002f10| 6c 65 6e 67 74 68 5d 20 | 3e 20 31 32 20 29 0a 20 |length] |> 12 ). |
|00002f20| 20 20 20 7b 0a 20 20 20 | 20 20 20 4e 53 4d 75 74 | {. | NSMut|
|00002f30| 61 62 6c 65 41 72 72 61 | 79 20 2a 61 4d 75 74 61 |ableArra|y *aMuta|
|00002f40| 62 6c 65 41 72 72 61 79 | 3b 0a 20 20 20 20 20 20 |bleArray|;. |
|00002f50| 4e 53 41 72 72 61 79 20 | 2a 61 6c 6c 52 65 66 65 |NSArray |*allRefe|
|00002f60| 72 65 6e 63 65 73 3b 0a | 20 20 20 20 20 20 69 6e |rences;.| in|
|00002f70| 74 20 69 3b 0a 0a 20 20 | 20 20 20 20 61 6c 6c 52 |t i;.. | allR|
|00002f80| 65 66 65 72 65 6e 63 65 | 73 20 3d 20 5b 5b 74 68 |eference|s = [[th|
|00002f90| 65 4c 69 6e 65 20 73 75 | 62 64 61 74 61 46 72 6f |eLine su|bdataFro|
|00002fa0| 6d 49 6e 64 65 78 3a 20 | 31 32 5d 20 63 6f 6d 70 |mIndex: |12] comp|
|00002fb0| 6f 6e 65 6e 74 73 53 65 | 70 61 72 61 74 65 64 42 |onentsSe|paratedB|
|00002fc0| 79 43 53 74 72 69 6e 67 | 3a 20 22 20 22 5d 3b 0a |yCString|: " "];.|
|00002fd0| 0a 20 20 20 20 20 20 61 | 4d 75 74 61 62 6c 65 41 |. a|MutableA|
|00002fe0| 72 72 61 79 20 3d 20 5b | 5b 4e 53 4d 75 74 61 62 |rray = [|[NSMutab|
|00002ff0| 6c 65 41 72 72 61 79 20 | 61 6c 6c 6f 63 5d 20 69 |leArray |alloc] i|
|00003000| 6e 69 74 57 69 74 68 43 | 61 70 61 63 69 74 79 3a |nitWithC|apacity:|
|00003010| 20 5b 61 6c 6c 52 65 66 | 65 72 65 6e 63 65 73 20 | [allRef|erences |
|00003020| 63 6f 75 6e 74 5d 5d 3b | 0a 20 20 20 20 20 20 0a |count]];|. .|
|00003030| 20 20 20 20 20 20 66 6f | 72 20 28 69 20 3d 20 30 | fo|r (i = 0|
|00003040| 3b 20 69 20 3c 20 5b 61 | 6c 6c 52 65 66 65 72 65 |; i < [a|llRefere|
|00003050| 6e 63 65 73 20 63 6f 75 | 6e 74 5d 3b 20 69 2b 2b |nces cou|nt]; i++|
|00003060| 29 0a 09 7b 0a 09 20 20 | 5b 61 4d 75 74 61 62 6c |)..{.. |[aMutabl|
|00003070| 65 41 72 72 61 79 20 61 | 64 64 4f 62 6a 65 63 74 |eArray a|ddObject|
|00003080| 3a 20 5b 5b 61 6c 6c 52 | 65 66 65 72 65 6e 63 65 |: [[allR|eference|
|00003090| 73 20 6f 62 6a 65 63 74 | 41 74 49 6e 64 65 78 3a |s object|AtIndex:|
|000030a0| 20 69 5d 20 61 73 63 69 | 69 53 74 72 69 6e 67 5d | i] asci|iString]|
|000030b0| 5d 3b 0a 09 7d 0a 0a 20 | 20 20 20 20 20 5b 74 68 |];..}.. | [th|
|000030c0| 65 4d 65 73 73 61 67 65 | 20 73 65 74 52 65 66 65 |eMessage| setRefe|
|000030d0| 72 65 6e 63 65 73 3a 20 | 61 4d 75 74 61 62 6c 65 |rences: |aMutable|
|000030e0| 41 72 72 61 79 5d 3b 0a | 20 20 20 20 20 20 52 45 |Array];.| RE|
|000030f0| 4c 45 41 53 45 28 61 4d | 75 74 61 62 6c 65 41 72 |LEASE(aM|utableAr|
|00003100| 72 61 79 29 3b 0a 20 20 | 20 20 7d 0a 7d 0a 0a 0a |ray);. | }.}...|
|00003110| 2f 2f 0a 2f 2f 20 54 68 | 69 73 20 6d 65 74 68 6f |//.// Th|is metho|
|00003120| 64 20 69 73 20 75 73 65 | 64 20 74 6f 20 70 61 72 |d is use|d to par|
|00003130| 73 65 20 74 68 65 20 52 | 65 70 6c 79 2d 54 6f 3a |se the R|eply-To:|
|00003140| 20 68 65 61 64 65 72 20 | 76 61 6c 75 65 2e 0a 2f | header |value../|
|00003150| 2f 0a 2b 20 28 76 6f 69 | 64 29 20 70 61 72 73 65 |/.+ (voi|d) parse|
|00003160| 52 65 70 6c 79 54 6f 3a | 20 28 4e 53 44 61 74 61 |ReplyTo:| (NSData|
|00003170| 20 2a 29 20 74 68 65 4c | 69 6e 65 0a 09 20 20 20 | *) theL|ine.. |
|00003180| 20 69 6e 4d 65 73 73 61 | 67 65 3a 20 28 4d 65 73 | inMessa|ge: (Mes|
|00003190| 73 61 67 65 20 2a 29 20 | 74 68 65 4d 65 73 73 61 |sage *) |theMessa|
|000031a0| 67 65 0a 7b 0a 20 20 49 | 6e 74 65 72 6e 65 74 41 |ge.{. I|nternetA|
|000031b0| 64 64 72 65 73 73 20 2a | 61 6e 49 6e 74 65 72 6e |ddress *|anIntern|
|000031c0| 65 74 41 64 64 72 65 73 | 73 3b 0a 20 20 63 68 61 |etAddres|s;. cha|
|000031d0| 72 20 61 62 75 66 5b 31 | 32 38 5d 2c 20 6e 62 75 |r abuf[1|28], nbu|
|000031e0| 66 5b 31 32 38 5d 2c 20 | 2a 63 66 2c 20 2a 6e 66 |f[128], |*cf, *nf|
|000031f0| 3b 0a 20 20 69 6e 74 20 | 72 63 3b 0a 20 20 0a 20 |;. int |rc;. . |
|00003200| 20 69 66 20 28 20 21 28 | 5b 74 68 65 4c 69 6e 65 | if ( !(|[theLine|
|00003210| 20 6c 65 6e 67 74 68 5d | 20 3e 20 31 30 29 20 29 | length]| > 10) )|
|00003220| 0a 20 20 20 20 7b 0a 20 | 20 20 20 20 20 72 65 74 |. {. | ret|
|00003230| 75 72 6e 3b 0a 20 20 20 | 20 7d 0a 0a 20 20 63 66 |urn;. | }.. cf|
|00003240| 20 3d 20 28 63 68 61 72 | 2a 29 5b 5b 74 68 65 4c | = (char|*)[[theL|
|00003250| 69 6e 65 20 73 75 62 64 | 61 74 61 46 72 6f 6d 49 |ine subd|ataFromI|
|00003260| 6e 64 65 78 3a 20 31 30 | 5d 20 63 53 74 72 69 6e |ndex: 10|] cStrin|
|00003270| 67 5d 3b 0a 20 20 72 63 | 20 3d 20 70 61 72 73 65 |g];. rc| = parse|
|00003280| 5f 61 72 70 61 5f 6d 61 | 69 6c 62 6f 78 28 63 66 |_arpa_ma|ilbox(cf|
|00003290| 2c 20 61 62 75 66 2c 20 | 73 69 7a 65 6f 66 28 61 |, abuf, |sizeof(a|
|000032a0| 62 75 66 29 2c 20 6e 62 | 75 66 2c 20 73 69 7a 65 |buf), nb|uf, size|
|000032b0| 6f 66 28 6e 62 75 66 29 | 2c 20 26 6e 66 29 3b 0a |of(nbuf)|, &nf);.|
|000032c0| 0a 20 20 61 6e 49 6e 74 | 65 72 6e 65 74 41 64 64 |. anInt|ernetAdd|
|000032d0| 72 65 73 73 20 3d 20 5b | 5b 49 6e 74 65 72 6e 65 |ress = [|[Interne|
|000032e0| 74 41 64 64 72 65 73 73 | 20 61 6c 6c 6f 63 5d 20 |tAddress| alloc] |
|000032f0| 69 6e 69 74 5d 3b 0a 20 | 20 0a 20 20 69 66 20 28 |init];. | . if (|
|00003300| 72 63 20 3c 20 30 29 0a | 20 20 20 20 7b 0a 20 20 |rc < 0).| {. |
|00003310| 20 20 20 20 5b 61 6e 49 | 6e 74 65 72 6e 65 74 41 | [anI|nternetA|
|00003320| 64 64 72 65 73 73 20 73 | 65 74 50 65 72 73 6f 6e |ddress s|etPerson|
|00003330| 61 6c 3a 20 5b 4d 69 6d | 65 55 74 69 6c 69 74 79 |al: [Mim|eUtility|
|00003340| 20 64 65 63 6f 64 65 48 | 65 61 64 65 72 3a 5b 4e | decodeH|eader:[N|
|00003350| 53 44 61 74 61 20 64 61 | 74 61 57 69 74 68 43 53 |SData da|taWithCS|
|00003360| 74 72 69 6e 67 3a 20 63 | 66 5d 5d 20 5d 3b 0a 20 |tring: c|f]] ];. |
|00003370| 20 20 20 7d 0a 20 20 65 | 6c 73 65 0a 20 20 20 20 | }. e|lse. |
|00003380| 7b 0a 20 20 20 20 20 20 | 5b 61 6e 49 6e 74 65 72 |{. |[anInter|
|00003390| 6e 65 74 41 64 64 72 65 | 73 73 20 73 65 74 50 65 |netAddre|ss setPe|
|000033a0| 72 73 6f 6e 61 6c 3a 20 | 5b 4d 69 6d 65 55 74 69 |rsonal: |[MimeUti|
|000033b0| 6c 69 74 79 20 64 65 63 | 6f 64 65 48 65 61 64 65 |lity dec|odeHeade|
|000033c0| 72 3a 5b 4e 53 44 61 74 | 61 20 64 61 74 61 57 69 |r:[NSDat|a dataWi|
|000033d0| 74 68 43 53 74 72 69 6e | 67 3a 20 6e 62 75 66 5d |thCStrin|g: nbuf]|
|000033e0| 5d 20 5d 3b 0a 20 20 20 | 20 20 20 5b 61 6e 49 6e |] ];. | [anIn|
|000033f0| 74 65 72 6e 65 74 41 64 | 64 72 65 73 73 20 73 65 |ternetAd|dress se|
|00003400| 74 41 64 64 72 65 73 73 | 3a 20 5b 4e 53 53 74 72 |tAddress|: [NSStr|
|00003410| 69 6e 67 20 73 74 72 69 | 6e 67 57 69 74 68 43 53 |ing stri|ngWithCS|
|00003420| 74 72 69 6e 67 3a 61 62 | 75 66 5d 20 5d 3b 0a 20 |tring:ab|uf] ];. |
|00003430| 20 20 20 7d 0a 0a 20 20 | 5b 74 68 65 4d 65 73 73 | }.. |[theMess|
|00003440| 61 67 65 20 73 65 74 52 | 65 70 6c 79 54 6f 3a 20 |age setR|eplyTo: |
|00003450| 61 6e 49 6e 74 65 72 6e | 65 74 41 64 64 72 65 73 |anIntern|etAddres|
|00003460| 73 5d 3b 0a 20 20 52 45 | 4c 45 41 53 45 28 61 6e |s];. RE|LEASE(an|
|00003470| 49 6e 74 65 72 6e 65 74 | 41 64 64 72 65 73 73 29 |Internet|Address)|
|00003480| 3b 0a 7d 0a 0a 0a 2f 2f | 0a 2f 2f 20 54 68 69 73 |;.}...//|.// This|
|00003490| 20 6d 65 74 68 6f 64 20 | 69 73 20 75 73 65 64 20 | method |is used |
|000034a0| 74 6f 20 70 61 72 73 65 | 20 74 68 65 20 52 65 73 |to parse| the Res|
|000034b0| 65 6e 74 2d 46 72 6f 6d | 3a 20 68 65 61 64 65 72 |ent-From|: header|
|000034c0| 20 76 61 6c 75 65 2e 0a | 2f 2f 0a 2b 20 28 76 6f | value..|//.+ (vo|
|000034d0| 69 64 29 20 70 61 72 73 | 65 52 65 73 65 6e 74 46 |id) pars|eResentF|
|000034e0| 72 6f 6d 3a 20 28 4e 53 | 44 61 74 61 20 2a 29 20 |rom: (NS|Data *) |
|000034f0| 74 68 65 4c 69 6e 65 0a | 09 20 69 6e 4d 65 73 73 |theLine.|. inMess|
|00003500| 61 67 65 3a 20 28 4d 65 | 73 73 61 67 65 20 2a 29 |age: (Me|ssage *)|
|00003510| 20 74 68 65 4d 65 73 73 | 61 67 65 0a 7b 0a 20 20 | theMess|age.{. |
|00003520| 49 6e 74 65 72 6e 65 74 | 41 64 64 72 65 73 73 20 |Internet|Address |
|00003530| 2a 61 6e 49 6e 74 65 72 | 6e 65 74 41 64 64 72 65 |*anInter|netAddre|
|00003540| 73 73 3b 0a 20 20 63 68 | 61 72 20 61 62 75 66 5b |ss;. ch|ar abuf[|
|00003550| 31 32 38 5d 2c 20 6e 62 | 75 66 5b 31 32 38 5d 2c |128], nb|uf[128],|
|00003560| 20 2a 63 66 2c 20 2a 6e | 66 3b 0a 20 20 69 6e 74 | *cf, *n|f;. int|
|00003570| 20 72 63 3b 0a 20 20 0a | 20 20 69 66 20 28 20 21 | rc;. .| if ( !|
|00003580| 28 5b 74 68 65 4c 69 6e | 65 20 6c 65 6e 67 74 68 |([theLin|e length|
|00003590| 5d 20 3e 20 31 33 29 20 | 29 0a 20 20 20 20 7b 0a |] > 13) |). {.|
|000035a0| 20 20 20 20 20 20 72 65 | 74 75 72 6e 3b 0a 20 20 | re|turn;. |
|000035b0| 20 20 7d 0a 20 20 0a 20 | 20 63 66 20 3d 20 28 63 | }. . | cf = (c|
|000035c0| 68 61 72 2a 29 5b 5b 74 | 68 65 4c 69 6e 65 20 73 |har*)[[t|heLine s|
|000035d0| 75 62 64 61 74 61 46 72 | 6f 6d 49 6e 64 65 78 3a |ubdataFr|omIndex:|
|000035e0| 20 31 33 5d 20 63 53 74 | 72 69 6e 67 5d 3b 0a 20 | 13] cSt|ring];. |
|000035f0| 20 72 63 20 3d 20 70 61 | 72 73 65 5f 61 72 70 61 | rc = pa|rse_arpa|
|00003600| 5f 6d 61 69 6c 62 6f 78 | 28 63 66 2c 20 61 62 75 |_mailbox|(cf, abu|
|00003610| 66 2c 20 73 69 7a 65 6f | 66 28 61 62 75 66 29 2c |f, sizeo|f(abuf),|
|00003620| 20 6e 62 75 66 2c 20 73 | 69 7a 65 6f 66 28 6e 62 | nbuf, s|izeof(nb|
|00003630| 75 66 29 2c 20 26 6e 66 | 29 3b 0a 0a 20 20 61 6e |uf), &nf|);.. an|
|00003640| 49 6e 74 65 72 6e 65 74 | 41 64 64 72 65 73 73 20 |Internet|Address |
|00003650| 3d 20 5b 5b 49 6e 74 65 | 72 6e 65 74 41 64 64 72 |= [[Inte|rnetAddr|
|00003660| 65 73 73 20 61 6c 6c 6f | 63 5d 20 69 6e 69 74 5d |ess allo|c] init]|
|00003670| 3b 0a 20 20 0a 20 20 69 | 66 20 28 72 63 20 3c 20 |;. . i|f (rc < |
|00003680| 30 29 0a 20 20 20 20 7b | 0a 20 20 20 20 20 20 5b |0). {|. [|
|00003690| 61 6e 49 6e 74 65 72 6e | 65 74 41 64 64 72 65 73 |anIntern|etAddres|
|000036a0| 73 20 73 65 74 50 65 72 | 73 6f 6e 61 6c 3a 20 5b |s setPer|sonal: [|
|000036b0| 4d 69 6d 65 55 74 69 6c | 69 74 79 20 64 65 63 6f |MimeUtil|ity deco|
|000036c0| 64 65 48 65 61 64 65 72 | 3a 5b 4e 53 44 61 74 61 |deHeader|:[NSData|
|000036d0| 20 64 61 74 61 57 69 74 | 68 43 53 74 72 69 6e 67 | dataWit|hCString|
|000036e0| 3a 63 66 5d 5d 20 5d 3b | 0a 20 20 20 20 7d 0a 20 |:cf]] ];|. }. |
|000036f0| 20 65 6c 73 65 0a 20 20 | 20 20 7b 0a 20 20 20 20 | else. | {. |
|00003700| 20 20 5b 61 6e 49 6e 74 | 65 72 6e 65 74 41 64 64 | [anInt|ernetAdd|
|00003710| 72 65 73 73 20 73 65 74 | 50 65 72 73 6f 6e 61 6c |ress set|Personal|
|00003720| 3a 20 5b 4d 69 6d 65 55 | 74 69 6c 69 74 79 20 64 |: [MimeU|tility d|
|00003730| 65 63 6f 64 65 48 65 61 | 64 65 72 3a 5b 4e 53 44 |ecodeHea|der:[NSD|
|00003740| 61 74 61 20 64 61 74 61 | 57 69 74 68 43 53 74 72 |ata data|WithCStr|
|00003750| 69 6e 67 3a 6e 62 75 66 | 5d 5d 20 5d 3b 0a 20 20 |ing:nbuf|]] ];. |
|00003760| 20 20 20 20 5b 61 6e 49 | 6e 74 65 72 6e 65 74 41 | [anI|nternetA|
|00003770| 64 64 72 65 73 73 20 73 | 65 74 41 64 64 72 65 73 |ddress s|etAddres|
|00003780| 73 3a 20 5b 4e 53 53 74 | 72 69 6e 67 20 73 74 72 |s: [NSSt|ring str|
|00003790| 69 6e 67 57 69 74 68 43 | 53 74 72 69 6e 67 3a 61 |ingWithC|String:a|
|000037a0| 62 75 66 5d 20 5d 3b 0a | 20 20 20 20 7d 0a 20 20 |buf] ];.| }. |
|000037b0| 0a 20 20 5b 74 68 65 4d | 65 73 73 61 67 65 20 73 |. [theM|essage s|
|000037c0| 65 74 52 65 73 65 6e 74 | 46 72 6f 6d 3a 20 61 6e |etResent|From: an|
|000037d0| 49 6e 74 65 72 6e 65 74 | 41 64 64 72 65 73 73 5d |Internet|Address]|
|000037e0| 3b 0a 0a 20 20 52 45 4c | 45 41 53 45 28 61 6e 49 |;.. REL|EASE(anI|
|000037f0| 6e 74 65 72 6e 65 74 41 | 64 64 72 65 73 73 29 3b |nternetA|ddress);|
|00003800| 0a 7d 0a 0a 2f 2f 0a 2f | 2f 20 54 68 69 73 20 6d |.}..//./|/ This m|
|00003810| 65 74 68 6f 64 20 69 73 | 20 75 73 65 64 20 74 6f |ethod is| used to|
|00003820| 20 70 61 72 73 65 20 74 | 68 65 20 53 74 61 74 75 | parse t|he Statu|
|00003830| 73 3a 20 68 65 61 64 65 | 72 20 76 61 6c 75 65 2e |s: heade|r value.|
|00003840| 0a 2f 2f 0a 2b 20 28 76 | 6f 69 64 29 20 70 61 72 |.//.+ (v|oid) par|
|00003850| 73 65 53 74 61 74 75 73 | 3a 20 28 4e 53 44 61 74 |seStatus|: (NSDat|
|00003860| 61 20 2a 29 20 74 68 65 | 4c 69 6e 65 0a 09 20 20 |a *) the|Line.. |
|00003870| 20 69 6e 4d 65 73 73 61 | 67 65 3a 20 28 4d 65 73 | inMessa|ge: (Mes|
|00003880| 73 61 67 65 20 2a 29 20 | 74 68 65 4d 65 73 73 61 |sage *) |theMessa|
|00003890| 67 65 0a 7b 0a 20 20 69 | 66 20 28 20 5b 74 68 65 |ge.{. i|f ( [the|
|000038a0| 4c 69 6e 65 20 6c 65 6e | 67 74 68 5d 20 3e 20 38 |Line len|gth] > 8|
|000038b0| 20 29 0a 20 20 20 20 7b | 0a 20 20 20 20 20 20 5b | ). {|. [|
|000038c0| 5b 74 68 65 4d 65 73 73 | 61 67 65 20 66 6c 61 67 |[theMess|age flag|
|000038d0| 73 5d 20 61 64 64 46 6c | 61 67 73 46 72 6f 6d 53 |s] addFl|agsFromS|
|000038e0| 74 72 69 6e 67 3a 20 5b | 5b 74 68 65 4c 69 6e 65 |tring: [|[theLine|
|000038f0| 20 73 75 62 64 61 74 61 | 46 72 6f 6d 49 6e 64 65 | subdata|FromInde|
|00003900| 78 3a 20 38 5d 20 61 73 | 63 69 69 53 74 72 69 6e |x: 8] as|ciiStrin|
|00003910| 67 5d 20 5d 3b 0a 20 20 | 20 20 20 20 5b 74 68 65 |g] ];. | [the|
|00003920| 4d 65 73 73 61 67 65 20 | 61 64 64 48 65 61 64 65 |Message |addHeade|
|00003930| 72 3a 20 40 22 53 74 61 | 74 75 73 22 20 77 69 74 |r: @"Sta|tus" wit|
|00003940| 68 56 61 6c 75 65 3a 20 | 5b 5b 74 68 65 4c 69 6e |hValue: |[[theLin|
|00003950| 65 20 73 75 62 64 61 74 | 61 46 72 6f 6d 49 6e 64 |e subdat|aFromInd|
|00003960| 65 78 3a 20 38 5d 20 61 | 73 63 69 69 53 74 72 69 |ex: 8] a|sciiStri|
|00003970| 6e 67 5d 20 5d 3b 0a 20 | 20 20 20 7d 0a 7d 0a 0a |ng] ];. | }.}..|
|00003980| 0a 2f 2f 0a 2f 2f 20 54 | 68 69 73 20 6d 65 74 68 |.//.// T|his meth|
|00003990| 6f 64 20 69 73 20 75 73 | 65 64 20 74 6f 20 70 61 |od is us|ed to pa|
|000039a0| 72 73 65 20 74 68 65 20 | 58 2d 53 74 61 74 75 73 |rse the |X-Status|
|000039b0| 3a 20 68 65 61 64 65 72 | 20 76 61 6c 75 65 2e 0a |: header| value..|
|000039c0| 2f 2f 0a 2b 20 28 76 6f | 69 64 29 20 70 61 72 73 |//.+ (vo|id) pars|
|000039d0| 65 58 53 74 61 74 75 73 | 3a 20 28 4e 53 44 61 74 |eXStatus|: (NSDat|
|000039e0| 61 20 2a 29 20 74 68 65 | 4c 69 6e 65 0a 09 20 20 |a *) the|Line.. |
|000039f0| 20 20 69 6e 4d 65 73 73 | 61 67 65 3a 20 28 4d 65 | inMess|age: (Me|
|00003a00| 73 73 61 67 65 20 2a 29 | 20 74 68 65 4d 65 73 73 |ssage *)| theMess|
|00003a10| 61 67 65 0a 7b 0a 20 20 | 69 66 20 28 20 5b 74 68 |age.{. |if ( [th|
|00003a20| 65 4c 69 6e 65 20 6c 65 | 6e 67 74 68 5d 20 3e 20 |eLine le|ngth] > |
|00003a30| 31 30 20 29 0a 20 20 20 | 20 7b 0a 20 20 20 20 20 |10 ). | {. |
|00003a40| 20 5b 5b 74 68 65 4d 65 | 73 73 61 67 65 20 66 6c | [[theMe|ssage fl|
|00003a50| 61 67 73 5d 20 61 64 64 | 46 6c 61 67 73 46 72 6f |ags] add|FlagsFro|
|00003a60| 6d 53 74 72 69 6e 67 3a | 20 5b 5b 74 68 65 4c 69 |mString:| [[theLi|
|00003a70| 6e 65 20 73 75 62 64 61 | 74 61 46 72 6f 6d 49 6e |ne subda|taFromIn|
|00003a80| 64 65 78 3a 20 31 30 5d | 20 61 73 63 69 69 53 74 |dex: 10]| asciiSt|
|00003a90| 72 69 6e 67 5d 20 5d 3b | 0a 20 20 20 20 20 20 5b |ring] ];|. [|
|00003aa0| 74 68 65 4d 65 73 73 61 | 67 65 20 61 64 64 48 65 |theMessa|ge addHe|
|00003ab0| 61 64 65 72 3a 20 40 22 | 58 2d 53 74 61 74 75 73 |ader: @"|X-Status|
|00003ac0| 22 20 77 69 74 68 56 61 | 6c 75 65 3a 20 5b 5b 74 |" withVa|lue: [[t|
|00003ad0| 68 65 4c 69 6e 65 20 73 | 75 62 64 61 74 61 46 72 |heLine s|ubdataFr|
|00003ae0| 6f 6d 49 6e 64 65 78 3a | 20 31 30 5d 20 61 73 63 |omIndex:| 10] asc|
|00003af0| 69 69 53 74 72 69 6e 67 | 5d 20 5d 3b 0a 20 20 20 |iiString|] ];. |
|00003b00| 20 7d 0a 7d 0a 0a 0a 2f | 2f 0a 2f 2f 20 54 68 69 | }.}.../|/.// Thi|
|00003b10| 73 20 6d 65 74 68 6f 64 | 20 69 73 20 75 73 65 64 |s method| is used|
|00003b20| 20 74 6f 20 70 61 72 73 | 65 20 74 68 65 20 53 75 | to pars|e the Su|
|00003b30| 62 6a 65 63 74 3a 20 68 | 65 61 64 65 72 20 76 61 |bject: h|eader va|
|00003b40| 6c 75 65 2e 0a 2f 2f 0a | 2b 20 28 76 6f 69 64 29 |lue..//.|+ (void)|
|00003b50| 20 70 61 72 73 65 53 75 | 62 6a 65 63 74 3a 20 28 | parseSu|bject: (|
|00003b60| 4e 53 44 61 74 61 20 2a | 29 20 74 68 65 4c 69 6e |NSData *|) theLin|
|00003b70| 65 0a 09 20 20 20 20 69 | 6e 4d 65 73 73 61 67 65 |e.. i|nMessage|
|00003b80| 3a 20 28 4d 65 73 73 61 | 67 65 20 2a 29 20 74 68 |: (Messa|ge *) th|
|00003b90| 65 4d 65 73 73 61 67 65 | 0a 7b 0a 20 20 4e 53 53 |eMessage|.{. NSS|
|00003ba0| 74 72 69 6e 67 20 2a 73 | 75 62 6a 65 63 74 3b 0a |tring *s|ubject;.|
|00003bb0| 0a 20 20 69 66 20 28 20 | 5b 74 68 65 4c 69 6e 65 |. if ( |[theLine|
|00003bc0| 20 6c 65 6e 67 74 68 5d | 20 3e 20 39 20 29 0a 20 | length]| > 9 ). |
|00003bd0| 20 20 20 7b 0a 20 20 20 | 20 20 20 73 75 62 6a 65 | {. | subje|
|00003be0| 63 74 20 3d 20 5b 4d 69 | 6d 65 55 74 69 6c 69 74 |ct = [Mi|meUtilit|
|00003bf0| 79 20 64 65 63 6f 64 65 | 48 65 61 64 65 72 3a 20 |y decode|Header: |
|00003c00| 5b 74 68 65 4c 69 6e 65 | 20 73 75 62 64 61 74 61 |[theLine| subdata|
|00003c10| 46 72 6f 6d 49 6e 64 65 | 78 3a 20 39 5d 20 5d 3b |FromInde|x: 9] ];|
|00003c20| 0a 20 20 20 20 7d 0a 20 | 20 65 6c 73 65 0a 20 20 |. }. | else. |
|00003c30| 20 20 7b 0a 20 20 20 20 | 20 20 73 75 62 6a 65 63 | {. | subjec|
|00003c40| 74 20 3d 20 40 22 22 3b | 0a 20 20 20 20 7d 0a 20 |t = @"";|. }. |
|00003c50| 20 0a 20 20 5b 74 68 65 | 4d 65 73 73 61 67 65 20 | . [the|Message |
|00003c60| 73 65 74 53 75 62 6a 65 | 63 74 3a 20 73 75 62 6a |setSubje|ct: subj|
|00003c70| 65 63 74 5d 3b 0a 7d 0a | 0a 0a 2f 2f 0a 2f 2f 20 |ect];.}.|..//.// |
|00003c80| 54 68 69 73 20 6d 65 74 | 68 6f 64 20 69 73 20 75 |This met|hod is u|
|00003c90| 73 65 64 20 74 6f 20 70 | 61 72 73 65 20 74 68 65 |sed to p|arse the|
|00003ca0| 20 68 65 61 64 65 72 73 | 20 74 68 61 74 20 77 65 | headers| that we|
|00003cb0| 0a 2f 2f 20 64 6f 6e 27 | 74 20 22 73 75 70 70 6f |.// don'|t "suppo|
|00003cc0| 72 74 20 6e 61 74 69 76 | 65 6c 79 22 2e 0a 2f 2f |rt nativ|ely"..//|
|00003cd0| 0a 2b 20 28 76 6f 69 64 | 29 20 70 61 72 73 65 55 |.+ (void|) parseU|
|00003ce0| 6e 6b 6e 6f 77 6e 48 65 | 61 64 65 72 3a 20 28 4e |nknownHe|ader: (N|
|00003cf0| 53 44 61 74 61 20 2a 29 | 20 74 68 65 4c 69 6e 65 |SData *)| theLine|
|00003d00| 0a 09 09 20 20 69 6e 4d | 65 73 73 61 67 65 3a 20 |... inM|essage: |
|00003d10| 28 4d 65 73 73 61 67 65 | 20 2a 29 20 74 68 65 4d |(Message| *) theM|
|00003d20| 65 73 73 61 67 65 0a 7b | 0a 20 20 4e 53 44 61 74 |essage.{|. NSDat|
|00003d30| 61 20 2a 61 4e 61 6d 65 | 2c 20 2a 61 56 61 6c 75 |a *aName|, *aValu|
|00003d40| 65 3b 0a 20 20 4e 53 52 | 61 6e 67 65 20 72 61 6e |e;. NSR|ange ran|
|00003d50| 67 65 3b 0a 0a 20 20 72 | 61 6e 67 65 20 3d 20 5b |ge;.. r|ange = [|
|00003d60| 74 68 65 4c 69 6e 65 20 | 72 61 6e 67 65 4f 66 43 |theLine |rangeOfC|
|00003d70| 53 74 72 69 6e 67 3a 20 | 22 3a 22 5d 3b 0a 20 20 |String: |":"];. |
|00003d80| 0a 20 20 69 66 20 28 72 | 61 6e 67 65 2e 6c 6f 63 |. if (r|ange.loc|
|00003d90| 61 74 69 6f 6e 20 21 3d | 20 4e 53 4e 6f 74 46 6f |ation !=| NSNotFo|
|00003da0| 75 6e 64 29 0a 20 20 20 | 20 7b 0a 20 20 20 20 20 |und). | {. |
|00003db0| 20 61 4e 61 6d 65 20 3d | 20 5b 74 68 65 4c 69 6e | aName =| [theLin|
|00003dc0| 65 20 73 75 62 64 61 74 | 61 57 69 74 68 52 61 6e |e subdat|aWithRan|
|00003dd0| 67 65 3a 20 4e 53 4d 61 | 6b 65 52 61 6e 67 65 28 |ge: NSMa|keRange(|
|00003de0| 30 2c 20 72 61 6e 67 65 | 2e 6c 6f 63 61 74 69 6f |0, range|.locatio|
|00003df0| 6e 29 20 5d 3b 0a 20 20 | 20 20 20 20 0a 20 20 20 |n) ];. | . |
|00003e00| 20 20 20 2f 2f 20 77 65 | 20 6b 65 65 70 20 6f 6e | // we| keep on|
|00003e10| 6c 79 20 74 68 65 20 68 | 65 61 64 65 72 73 20 74 |ly the h|eaders t|
|00003e20| 68 61 74 20 68 61 76 65 | 20 61 20 76 61 6c 75 65 |hat have| a value|
|00003e30| 0a 20 20 20 20 20 20 69 | 66 20 28 20 28 5b 74 68 |. i|f ( ([th|
|00003e40| 65 4c 69 6e 65 20 6c 65 | 6e 67 74 68 5d 20 2d 20 |eLine le|ngth] - |
|00003e50| 72 61 6e 67 65 2e 6c 6f | 63 61 74 69 6f 6e 20 2d |range.lo|cation -|
|00003e60| 20 31 29 20 3e 20 30 29 | 0a 09 7b 0a 09 20 20 61 | 1) > 0)|..{.. a|
|00003e70| 56 61 6c 75 65 20 3d 20 | 5b 74 68 65 4c 69 6e 65 |Value = |[theLine|
|00003e80| 20 73 75 62 64 61 74 61 | 57 69 74 68 52 61 6e 67 | subdata|WithRang|
|00003e90| 65 3a 20 4e 53 4d 61 6b | 65 52 61 6e 67 65 28 72 |e: NSMak|eRange(r|
|00003ea0| 61 6e 67 65 2e 6c 6f 63 | 61 74 69 6f 6e 20 2b 20 |ange.loc|ation + |
|00003eb0| 32 2c 20 5b 74 68 65 4c | 69 6e 65 20 6c 65 6e 67 |2, [theL|ine leng|
|00003ec0| 74 68 5d 20 2d 0a 09 09 | 09 09 09 09 09 20 20 20 |th] -...|..... |
|00003ed0| 20 72 61 6e 67 65 2e 6c | 6f 63 61 74 69 6f 6e 20 | range.l|ocation |
|00003ee0| 2d 20 32 29 20 5d 3b 0a | 09 20 20 0a 09 20 20 5b |- 2) ];.|. .. [|
|00003ef0| 74 68 65 4d 65 73 73 61 | 67 65 20 61 64 64 48 65 |theMessa|ge addHe|
|00003f00| 61 64 65 72 3a 20 5b 61 | 4e 61 6d 65 20 61 73 63 |ader: [a|Name asc|
|00003f10| 69 69 53 74 72 69 6e 67 | 5d 20 0a 09 09 20 20 20 |iiString|] ... |
|00003f20| 20 20 20 77 69 74 68 56 | 61 6c 75 65 3a 20 5b 61 | withV|alue: [a|
|00003f30| 56 61 6c 75 65 20 61 73 | 63 69 69 53 74 72 69 6e |Value as|ciiStrin|
|00003f40| 67 5d 20 5d 3b 0a 09 7d | 0a 20 20 20 20 7d 0a 7d |g] ];..}|. }.}|
|00003f50| 0a 0a 2f 2f 0a 2f 2f 20 | 54 68 69 73 20 6d 65 74 |..//.// |This met|
|00003f60| 68 6f 64 20 69 73 20 75 | 73 65 64 20 74 6f 20 70 |hod is u|sed to p|
|00003f70| 61 72 73 65 20 74 68 65 | 20 4f 72 67 61 6e 69 7a |arse the| Organiz|
|00003f80| 61 74 69 6f 6e 3a 20 68 | 65 61 64 65 72 20 76 61 |ation: h|eader va|
|00003f90| 6c 75 65 2e 0a 2f 2f 0a | 2b 20 28 76 6f 69 64 29 |lue..//.|+ (void)|
|00003fa0| 20 70 61 72 73 65 4f 72 | 67 61 6e 69 7a 61 74 69 | parseOr|ganizati|
|00003fb0| 6f 6e 3a 20 28 4e 53 44 | 61 74 61 20 2a 29 20 74 |on: (NSD|ata *) t|
|00003fc0| 68 65 4c 69 6e 65 0a 09 | 09 20 69 6e 4d 65 73 73 |heLine..|. inMess|
|00003fd0| 61 67 65 3a 20 28 4d 65 | 73 73 61 67 65 20 2a 29 |age: (Me|ssage *)|
|00003fe0| 20 74 68 65 4d 65 73 73 | 61 67 65 0a 7b 0a 20 20 | theMess|age.{. |
|00003ff0| 4e 53 53 74 72 69 6e 67 | 20 2a 6f 72 67 61 6e 69 |NSString| *organi|
|00004000| 7a 61 74 69 6f 6e 3b 0a | 0a 20 20 69 66 20 28 20 |zation;.|. if ( |
|00004010| 5b 74 68 65 4c 69 6e 65 | 20 6c 65 6e 67 74 68 5d |[theLine| length]|
|00004020| 20 3e 20 31 34 20 29 0a | 20 20 20 20 7b 0a 20 20 | > 14 ).| {. |
|00004030| 20 20 20 20 6f 72 67 61 | 6e 69 7a 61 74 69 6f 6e | orga|nization|
|00004040| 20 3d 20 5b 5b 74 68 65 | 4c 69 6e 65 20 73 75 62 | = [[the|Line sub|
|00004050| 64 61 74 61 46 72 6f 6d | 49 6e 64 65 78 3a 20 31 |dataFrom|Index: 1|
|00004060| 34 5d 20 61 73 63 69 69 | 53 74 72 69 6e 67 5d 3b |4] ascii|String];|
|00004070| 0a 20 20 20 20 7d 0a 20 | 20 65 6c 73 65 0a 20 20 |. }. | else. |
|00004080| 20 20 7b 0a 20 20 20 20 | 20 20 6f 72 67 61 6e 69 | {. | organi|
|00004090| 7a 61 74 69 6f 6e 20 3d | 20 40 22 22 3b 0a 20 20 |zation =| @"";. |
|000040a0| 20 20 7d 0a 20 20 0a 20 | 20 5b 74 68 65 4d 65 73 | }. . | [theMes|
|000040b0| 73 61 67 65 20 73 65 74 | 4f 72 67 61 6e 69 7a 61 |sage set|Organiza|
|000040c0| 74 69 6f 6e 3a 20 6f 72 | 67 61 6e 69 7a 61 74 69 |tion: or|ganizati|
|000040d0| 6f 6e 5d 3b 20 20 20 20 | 0a 7d 0a 0a 0a 2f 2f 0a |on]; |.}...//.|
|000040e0| 2f 2f 20 70 72 69 76 61 | 74 65 20 6d 65 74 68 6f |// priva|te metho|
|000040f0| 64 73 0a 2f 2f 0a 0a 2b | 20 28 4e 53 44 61 74 61 |ds.//..+| (NSData|
|00004100| 20 2a 29 20 5f 70 61 72 | 61 6d 65 74 65 72 56 61 | *) _par|ameterVa|
|00004110| 6c 75 65 55 73 69 6e 67 | 4c 69 6e 65 3a 20 28 4e |lueUsing|Line: (N|
|00004120| 53 44 61 74 61 20 2a 29 | 20 74 68 65 4c 69 6e 65 |SData *)| theLine|
|00004130| 0a 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00004140| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004150| 20 72 61 6e 67 65 3a 20 | 28 4e 53 52 61 6e 67 65 | range: |(NSRange|
|00004160| 29 20 74 68 65 52 61 6e | 67 65 0a 7b 0a 20 20 4e |) theRan|ge.{. N|
|00004170| 53 44 61 74 61 20 2a 61 | 56 61 6c 75 65 3b 0a 20 |SData *a|Value;. |
|00004180| 20 0a 20 20 2f 2f 20 54 | 68 65 20 70 61 72 61 6d | . // T|he param|
|00004190| 65 74 65 72 20 63 61 6e | 20 62 65 20 71 75 6f 74 |eter can| be quot|
|000041a0| 65 64 20 6f 72 20 6e 6f | 74 20 6c 69 6b 65 20 74 |ed or no|t like t|
|000041b0| 68 69 73 20 28 66 6f 72 | 20 65 78 61 6d 70 6c 65 |his (for| example|
|000041c0| 2c 20 77 69 74 68 20 61 | 20 63 68 61 72 73 65 74 |, with a| charset|
|000041d0| 29 3a 0a 20 20 2f 2f 20 | 63 68 61 72 73 65 74 3d |):. // |charset=|
|000041e0| 22 75 73 2d 61 73 63 69 | 69 22 0a 20 20 2f 2f 20 |"us-asci|i". // |
|000041f0| 63 68 61 72 73 65 74 3d | 75 73 2d 61 73 63 69 69 |charset=|us-ascii|
|00004200| 0a 20 20 2f 2f 0a 20 20 | 2f 2f 20 49 66 20 69 74 |. //. |// If it|
|00004210| 27 73 20 6e 6f 74 20 71 | 75 6f 74 65 64 2c 20 77 |'s not q|uoted, w|
|00004220| 65 20 72 65 61 64 20 75 | 6e 74 69 6c 20 77 65 20 |e read u|ntil we |
|00004230| 72 65 61 63 68 20 74 68 | 65 20 65 6e 64 20 6f 66 |reach th|e end of|
|00004240| 20 74 68 65 20 6c 69 6e | 65 20 6f 72 20 75 6e 74 | the lin|e or unt|
|00004250| 69 6c 20 77 65 20 72 65 | 61 63 68 20 3b 0a 20 20 |il we re|ach ;. |
|00004260| 2f 2f 0a 20 20 69 66 20 | 28 20 28 28 63 6f 6e 73 |//. if |( ((cons|
|00004270| 74 20 63 68 61 72 20 2a | 29 5b 74 68 65 4c 69 6e |t char *|)[theLin|
|00004280| 65 20 62 79 74 65 73 5d | 29 5b 28 74 68 65 52 61 |e bytes]|)[(theRa|
|00004290| 6e 67 65 2e 6c 6f 63 61 | 74 69 6f 6e 20 2b 20 74 |nge.loca|tion + t|
|000042a0| 68 65 52 61 6e 67 65 2e | 6c 65 6e 67 74 68 20 2b |heRange.|length +|
|000042b0| 20 31 29 5d 20 3d 3d 20 | 27 22 27 29 0a 20 20 20 | 1)] == |'"'). |
|000042c0| 20 7b 0a 20 20 20 20 20 | 20 4e 53 52 61 6e 67 65 | {. | NSRange|
|000042d0| 20 72 3b 0a 20 20 20 20 | 20 20 0a 20 20 20 20 20 | r;. | . |
|000042e0| 20 72 20 3d 20 5b 74 68 | 65 4c 69 6e 65 20 72 61 | r = [th|eLine ra|
|000042f0| 6e 67 65 4f 66 43 53 74 | 72 69 6e 67 3a 20 22 5c |ngeOfCSt|ring: "\|
|00004300| 22 22 0a 09 09 20 20 20 | 6f 70 74 69 6f 6e 73 3a |""... |options:|
|00004310| 20 30 0a 09 09 20 20 20 | 72 61 6e 67 65 3a 20 4e | 0... |range: N|
|00004320| 53 4d 61 6b 65 52 61 6e | 67 65 28 74 68 65 52 61 |SMakeRan|ge(theRa|
|00004330| 6e 67 65 2e 6c 6f 63 61 | 74 69 6f 6e 20 2b 20 74 |nge.loca|tion + t|
|00004340| 68 65 52 61 6e 67 65 2e | 6c 65 6e 67 74 68 20 2b |heRange.|length +|
|00004350| 20 32 2c 0a 09 09 09 09 | 20 20 20 20 20 20 5b 74 | 2,.....| [t|
|00004360| 68 65 4c 69 6e 65 20 6c | 65 6e 67 74 68 5d 20 2d |heLine l|ength] -|
|00004370| 20 74 68 65 52 61 6e 67 | 65 2e 6c 6f 63 61 74 69 | theRang|e.locati|
|00004380| 6f 6e 20 2d 20 74 68 65 | 52 61 6e 67 65 2e 6c 65 |on - the|Range.le|
|00004390| 6e 67 74 68 20 2d 20 32 | 29 5d 3b 0a 0a 2f 2a 20 |ngth - 2|)];../* |
|000043a0| 20 20 20 20 20 69 66 20 | 28 72 2e 6c 65 6e 67 74 | if |(r.lengt|
|000043b0| 68 3c 3d 30 29 20 54 4f | 44 4f 3f 20 2a 2f 0a 20 |h<=0) TO|DO? */. |
|000043c0| 20 20 20 20 20 0a 20 20 | 20 20 20 20 61 56 61 6c | . | aVal|
|000043d0| 75 65 20 3d 20 5b 74 68 | 65 4c 69 6e 65 20 73 75 |ue = [th|eLine su|
|000043e0| 62 64 61 74 61 57 69 74 | 68 52 61 6e 67 65 3a 20 |bdataWit|hRange: |
|000043f0| 4e 53 4d 61 6b 65 52 61 | 6e 67 65 28 74 68 65 52 |NSMakeRa|nge(theR|
|00004400| 61 6e 67 65 2e 6c 6f 63 | 61 74 69 6f 6e 20 2b 20 |ange.loc|ation + |
|00004410| 74 68 65 52 61 6e 67 65 | 2e 6c 65 6e 67 74 68 20 |theRange|.length |
|00004420| 2b 20 32 2c 0a 09 09 09 | 09 09 09 09 72 2e 6c 6f |+ 2,....|....r.lo|
|00004430| 63 61 74 69 6f 6e 20 2d | 20 74 68 65 52 61 6e 67 |cation -| theRang|
|00004440| 65 2e 6c 6f 63 61 74 69 | 6f 6e 20 2d 20 74 68 65 |e.locati|on - the|
|00004450| 52 61 6e 67 65 2e 6c 65 | 6e 67 74 68 20 2d 20 32 |Range.le|ngth - 2|
|00004460| 29 5d 3b 0a 20 20 20 20 | 7d 0a 20 20 2f 2f 0a 20 |)];. |}. //. |
|00004470| 20 2f 2f 20 49 74 27 73 | 20 6e 6f 74 20 71 75 6f | // It's| not quo|
|00004480| 74 65 64 2e 2e 2e 0a 20 | 20 2f 2f 0a 20 20 65 6c |ted.... | //. el|
|00004490| 73 65 0a 20 20 20 20 7b | 0a 20 20 20 20 20 20 4e |se. {|. N|
|000044a0| 53 52 61 6e 67 65 20 72 | 3b 0a 20 20 20 20 20 20 |SRange r|;. |
|000044b0| 0a 20 20 20 20 20 20 2f | 2f 20 57 65 20 6c 6f 6f |. /|/ We loo|
|000044c0| 6b 20 66 6f 72 20 74 68 | 65 20 66 69 72 73 74 20 |k for th|e first |
|000044d0| 3b 20 61 66 74 65 72 20 | 6f 75 72 20 63 68 61 72 |; after |our char|
|000044e0| 73 65 74 20 73 74 72 69 | 6e 67 0a 20 20 20 20 20 |set stri|ng. |
|000044f0| 20 72 20 3d 20 5b 74 68 | 65 4c 69 6e 65 20 72 61 | r = [th|eLine ra|
|00004500| 6e 67 65 4f 66 43 53 74 | 72 69 6e 67 3a 20 22 3b |ngeOfCSt|ring: ";|
|00004510| 22 0a 09 09 20 20 20 6f | 70 74 69 6f 6e 73 3a 20 |"... o|ptions: |
|00004520| 30 0a 09 09 20 20 20 72 | 61 6e 67 65 3a 20 4e 53 |0... r|ange: NS|
|00004530| 4d 61 6b 65 52 61 6e 67 | 65 28 74 68 65 52 61 6e |MakeRang|e(theRan|
|00004540| 67 65 2e 6c 6f 63 61 74 | 69 6f 6e 20 2b 20 74 68 |ge.locat|ion + th|
|00004550| 65 52 61 6e 67 65 2e 6c | 65 6e 67 74 68 20 2b 20 |eRange.l|ength + |
|00004560| 32 2c 0a 09 09 09 09 20 | 20 20 20 20 20 5b 74 68 |2,..... | [th|
|00004570| 65 4c 69 6e 65 20 6c 65 | 6e 67 74 68 5d 20 2d 20 |eLine le|ngth] - |
|00004580| 74 68 65 52 61 6e 67 65 | 2e 6c 6f 63 61 74 69 6f |theRange|.locatio|
|00004590| 6e 20 2d 20 74 68 65 52 | 61 6e 67 65 2e 6c 65 6e |n - theR|ange.len|
|000045a0| 67 74 68 20 2d 20 32 29 | 5d 3b 0a 20 20 20 20 20 |gth - 2)|];. |
|000045b0| 20 0a 20 20 20 20 20 20 | 2f 2f 20 57 65 20 66 6f | . |// We fo|
|000045c0| 75 6e 64 20 6f 6e 65 0a | 20 20 20 20 20 20 69 66 |und one.| if|
|000045d0| 20 28 20 72 2e 6c 65 6e | 67 74 68 20 29 0a 09 7b | ( r.len|gth )..{|
|000045e0| 0a 09 20 20 61 56 61 6c | 75 65 20 3d 20 5b 74 68 |.. aVal|ue = [th|
|000045f0| 65 4c 69 6e 65 20 73 75 | 62 64 61 74 61 57 69 74 |eLine su|bdataWit|
|00004600| 68 52 61 6e 67 65 3a 20 | 4e 53 4d 61 6b 65 52 61 |hRange: |NSMakeRa|
|00004610| 6e 67 65 28 74 68 65 52 | 61 6e 67 65 2e 6c 6f 63 |nge(theR|ange.loc|
|00004620| 61 74 69 6f 6e 20 2b 20 | 74 68 65 52 61 6e 67 65 |ation + |theRange|
|00004630| 2e 6c 65 6e 67 74 68 20 | 2b 20 31 2c 0a 09 09 09 |.length |+ 1,....|
|00004640| 09 09 09 09 20 20 20 20 | 20 20 72 2e 6c 6f 63 61 |.... | r.loca|
|00004650| 74 69 6f 6e 20 2d 20 74 | 68 65 52 61 6e 67 65 2e |tion - t|heRange.|
|00004660| 6c 6f 63 61 74 69 6f 6e | 20 2d 20 74 68 65 52 61 |location| - theRa|
|00004670| 6e 67 65 2e 6c 65 6e 67 | 74 68 20 2d 20 31 29 5d |nge.leng|th - 1)]|
|00004680| 3b 0a 09 7d 0a 20 20 20 | 20 20 20 2f 2f 20 57 65 |;..}. | // We|
|00004690| 20 68 61 76 65 6e 27 74 | 2c 20 6c 65 74 27 73 20 | haven't|, let's |
|000046a0| 72 65 61 64 20 75 6e 74 | 69 6c 20 74 68 65 20 65 |read unt|il the e|
|000046b0| 6e 64 20 6f 66 20 74 68 | 65 20 6c 69 6e 65 2e 0a |nd of th|e line..|
|000046c0| 20 20 20 20 20 20 65 6c | 73 65 0a 09 7b 0a 09 20 | el|se..{.. |
|000046d0| 20 61 56 61 6c 75 65 20 | 3d 20 5b 74 68 65 4c 69 | aValue |= [theLi|
|000046e0| 6e 65 20 73 75 62 64 61 | 74 61 57 69 74 68 52 61 |ne subda|taWithRa|
|000046f0| 6e 67 65 3a 20 4e 53 4d | 61 6b 65 52 61 6e 67 65 |nge: NSM|akeRange|
|00004700| 28 74 68 65 52 61 6e 67 | 65 2e 6c 6f 63 61 74 69 |(theRang|e.locati|
|00004710| 6f 6e 20 2b 20 74 68 65 | 52 61 6e 67 65 2e 6c 65 |on + the|Range.le|
|00004720| 6e 67 74 68 20 2b 20 31 | 2c 0a 09 09 09 09 09 09 |ngth + 1|,.......|
|00004730| 09 20 20 20 20 20 20 5b | 74 68 65 4c 69 6e 65 20 |. [|theLine |
|00004740| 6c 65 6e 67 74 68 5d 20 | 2d 20 74 68 65 52 61 6e |length] |- theRan|
|00004750| 67 65 2e 6c 6f 63 61 74 | 69 6f 6e 20 2d 20 74 68 |ge.locat|ion - th|
|00004760| 65 52 61 6e 67 65 2e 6c | 65 6e 67 74 68 20 2d 20 |eRange.l|ength - |
|00004770| 31 29 5d 3b 0a 09 7d 0a | 20 20 20 20 7d 0a 20 20 |1)];..}.| }. |
|00004780| 0a 20 20 2f 2f 4e 53 44 | 65 62 75 67 4c 6f 67 28 |. //NSD|ebugLog(|
|00004790| 40 22 72 65 74 75 72 6e | 69 6e 67 20 7c 25 40 7c |@"return|ing |%@||
|000047a0| 22 2c 20 61 56 61 6c 75 | 65 29 3b 0a 0a 20 20 72 |", aValu|e);.. r|
|000047b0| 65 74 75 72 6e 20 61 56 | 61 6c 75 65 3b 0a 7d 0a |eturn aV|alue;.}.|
|000047c0| 0a 40 65 6e 64 0a 00 00 | 00 00 00 00 00 00 00 00 |.@end...|........|
|000047d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000047e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000047f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004800| 00 00 01 00 00 00 01 00 | 00 00 00 00 00 00 00 1e |........|........|
|00004810| 54 68 69 73 20 72 65 73 | 6f 75 72 63 65 20 66 6f |This res|ource fo|
|00004820| 72 6b 20 69 6e 74 65 6e | 74 69 6f 6e 61 6c 6c 79 |rk inten|tionally|
|00004830| 20 6c 65 66 74 20 62 6c | 61 6e 6b 20 20 20 00 00 | left bl|ank ..|
|00004840| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004850| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004860| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004870| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004880| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004890| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000048a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000048b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000048c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000048d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000048e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000048f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004900| 00 00 01 00 00 00 01 00 | 00 00 00 00 00 00 00 1e |........|........|
|00004910| 00 00 00 00 00 00 00 00 | 00 1c 00 1e ff ff 00 00 |........|........|
|00004920| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004930| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004940| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004950| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004960| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004970| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+